如何用许多随机数填充MySQL表?

我要问的是已被要求在一个问题很抽象的术语,用(理解)没有具体的答案提供:

在MySQL提示下,如何创建和填充rand_numbers具有1列number

INT和1111行的表,其中该number列包含2222和5555之间的随机数?

就像是:

CREATE TABLE rand_numbers(number INT);

#run following line 1111 times

INSERT INTO rand_numbers (number) VALUES (2222 + CEIL( RAND() * 3333));

已经提出了这个问题,但是要么依赖于外部语言进行循环,要么太笼统了。我想知道是否可以从典型的Linux MySQL提示符下执行此简单操作。

回答:

要创建表,请使用:

CREATE TABLE rand_numbers (

number INT NOT NULL

) ENGINE = MYISAM;

然后,用随机值填充它,您可以定义一个存储过程(它支持循环):

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表? 的全部内容, 来源链接: utcz.com/qa/401178.html

回到顶部