Hướng dẫn insert random data into mysql table - chèn dữ liệu ngẫu nhiên vào bảng mysql

Tôi sẽ hỏi một câu hỏi đã được hỏi bằng các thuật ngữ rất trừu tượng, với (có thể hiểu được) không có câu trả lời cụ thể nào được cung cấp:

Từ lời nhắc MySQL, làm thế nào để tôi tạo và điền một bảng, rand_numbers, với một cột, number INT và 1111 hàng, trong đó cột

CREATE TABLE rand_numbers (
    number INT NOT NULL
) ENGINE = MYISAM;
0 giữ một số ngẫu nhiên trong khoảng từ 2222 đến 5555?

Cái gì đó như:

CREATE TABLE rand_numbers(number INT);

 #run following line 1111 times
INSERT INTO rand_numbers (number) VALUES (2222 + CEIL( RAND() * 3333));

Câu hỏi này đã được đặt ra, nhưng hoặc dựa vào các ngôn ngữ bên ngoài cho vòng lặp hoặc quá chung chung. Tôi muốn biết liệu có thể làm điều gì đó đơn giản này từ lời nhắc Linux MySQL điển hình không.

Hướng dẫn insert random data into mysql table - chèn dữ liệu ngẫu nhiên vào bảng mysql

hỏi ngày 14 tháng 6 năm 2012 lúc 23:04Jun 14, 2012 at 23:04

drug_user841417drug_user841417drug_user841417

7571 Huy hiệu vàng7 Huy hiệu bạc12 Huy hiệu đồng1 gold badge7 silver badges12 bronze badges

2

Để tạo bảng sử dụng:

CREATE TABLE rand_numbers (
    number INT NOT NULL
) ENGINE = MYISAM;

Sau đó, để điền nó với các giá trị ngẫu nhiên, bạn có thể xác định một quy trình được lưu trữ (hỗ trợ vòng lặp):

DELIMITER $$
CREATE PROCEDURE InsertRand(IN NumRows INT, IN MinVal INT, IN MaxVal INT)
    BEGIN
        DECLARE i INT;
        SET i = 1;
        START TRANSACTION;
        WHILE i <= NumRows DO
            INSERT INTO rand_numbers VALUES (MinVal + CEIL(RAND() * (MaxVal - MinVal)));
            SET i = i + 1;
        END WHILE;
        COMMIT;
    END$$
DELIMITER ;

CALL InsertRand(1111, 2222, 5555);

Sau đó, bạn có thể sử dụng lại quy trình đó để chèn nhiều giá trị ngẫu nhiên hơn dựa trên các tham số khác nhau .. giả sử 600 hàng có giá trị ngẫu nhiên trong khoảng từ 1200 đến 8500:

CALL InsertRand(600, 1200, 8500);

Đã trả lời ngày 14 tháng 6 năm 2012 lúc 23:13Jun 14, 2012 at 23:13

1

Không tạo ra một quy trình được lưu trữ, một kỹ thuật tôi đã áp dụng là sử dụng bảng để thêm các cột. Hạt giống đầu tiên nó với một giá trị ...

INSERT INTO rand_numbers ( number ) VALUES ( rand() * 3333 );

Sau đó chèn lại, chọn từ bảng này để tăng gấp đôi các hàng mỗi lần ...

INSERT INTO rand_numbers ( number ) SELECT number * rand() FROM rand_numbers; 

Bạn không cần phải chạy truy vấn thứ hai nhiều lần để có được một vài hàng ngẫu nhiên. Không phải là "gọn gàng" như sử dụng một thủ tục được lưu trữ tất nhiên, chỉ cần đề xuất một giải pháp thay thế.

Như đã chỉ ra bởi Mohamed23gharbi, bạn có thể gặp phải các bản sao nếu khối lượng thử nghiệm của bạn quá lớn. Bạn có thể sử dụng

CREATE TABLE rand_numbers (
    number INT NOT NULL
) ENGINE = MYISAM;
1 để bỏ qua các bản sao nếu đó là một vấn đề.

Đã trả lời ngày 10 tháng 4 năm 2014 lúc 12:52Apr 10, 2014 at 12:52

Rodnaphrodnaphrodnaph

1.21710 Huy hiệu bạc12 Huy hiệu đồng10 silver badges12 bronze badges

5

Nhiệm vụ cũng có thể được thực hiện theo cách này:

-- scale from 0 to MAX

UPDATE `table` SET `column` = 1000 * RAND() WHERE 1;

-- scale from MIN to MAX

UPDATE `table` SET `column` = MIN + (MAX - MIN) * RAND() WHERE 1;

Bạn cũng có thể sử dụng hàm toán như sàn (), ceil (), v.v. trong biểu thức ..

Hướng dẫn insert random data into mysql table - chèn dữ liệu ngẫu nhiên vào bảng mysql

Potame

7.3874 Huy hiệu vàng25 Huy hiệu bạc31 Huy hiệu đồng4 gold badges25 silver badges31 bronze badges

Đã trả lời ngày 14 tháng 5 năm 2015 lúc 8:09May 14, 2015 at 8:09

user4898949user4898949user4898949

Bạc bạc 2012 Huy hiệu đồng2 silver badges2 bronze badges

5

Tôi đã luôn sử dụng cái này -

insert into rand_numbers ( number ) select rand() from (
    select 0 as i
    union select 1 union select 2 union select 3
    union select 4 union select 5 union select 6
    union select 7 union select 8 union select 9
) as t1, (
    select 0 as i
    union select 1 union select 2 union select 3
    union select 4 union select 5 union select 6
    union select 7 union select 8 union select 9
) as t2, (
    select 0 as i
    union select 1 union select 2 union select 3
    union select 4 union select 5 union select 6
    union select 7 union select 8 union select 9
) as t3;

Chèn 1000 số ngẫu nhiên. Bảng trên đường

CREATE TABLE rand_numbers (
    number INT NOT NULL
) ENGINE = MYISAM;
2,
CREATE TABLE rand_numbers (
    number INT NOT NULL
) ENGINE = MYISAM;
3,
CREATE TABLE rand_numbers (
    number INT NOT NULL
) ENGINE = MYISAM;
4 được nối chéo để chúng tôi nhận được các hàng 10x10x10.

Vì vậy, đối với một triệu hàng, chỉ cần thêm 3 câu khác. Điều này có vẻ thuận tiện đối với tôi, vì không có nhiều nỗ lực sao chép một vài dòng một loạt lần.

Hi vọng điêu nay co ich,

Đã trả lời ngày 8 tháng 11 năm 2014 lúc 8:37Nov 8, 2014 at 8:37

OptimusOptimusOptimus

2.6663 huy hiệu vàng28 Huy hiệu bạc49 Huy hiệu đồng3 gold badges28 silver badges49 bronze badges

Nếu bạn lười biếng và bạn có truy vấn để tạo bảng, hãy thử http://filldb.info//

Đã trả lời ngày 23 tháng 4 năm 2020 lúc 9:14Apr 23, 2020 at 9:14

Hướng dẫn insert random data into mysql table - chèn dữ liệu ngẫu nhiên vào bảng mysql