我要问一个在very抽象terms中提出的问题,(显然)没有提供具体答案:

在MySQL提示符下,如何创建和填充具有一列rand_numbers和1111行的表number INT,其中number列包含2222和5555之间的随机数?

就像是:

CREATE TABLE rand_numbers(number INT);

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


已经问过这个问题,但是循环的relies语言上的external还是far too general。我想知道是否可以从典型的Linux MySQL提示符下执行此简单操作。

最佳答案

要创建表,请使用:

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


然后使用随机值填充它,您可以定义stored procedure(支持循环):

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);


然后,您可以重复使用该过程以根据不同的参数插入更多的随机值。例如说600行的随机值介于1200和8500之间:

CALL InsertRand(600, 1200, 8500);

关于mysql - 如何用许多随机数填充MySQL表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32105686/

10-14 13:50
查看更多