MYSQL插入,随机值在1-5之间

MYSQL插入,随机值在1-5之间,mysql,sql,Mysql,Sql,我想做一个INSERINTO语句,但我需要一些字段来每次生成随机数:例如 INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,RAND NUMBER,RAND NUMBER,...); 因此,每次创建新记录时,它都会在列中输入一个随机数。因此,大多数值都是静态的,但有些值需要在数字集(例如1-5或1000-5000)之间进行RAND 有什么帮助吗?使用此功能应该可以: FLOOR(min+RAND()*(max

我想做一个INSERINTO语句,但我需要一些字段来每次生成随机数:例如

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,RAND NUMBER,RAND NUMBER,...);
因此,每次创建新记录时,它都会在列中输入一个随机数。因此,大多数值都是静态的,但有些值需要在数字集(例如1-5或1000-5000)之间进行RAND


有什么帮助吗?

使用此功能应该可以:

FLOOR(min+RAND()*(max-min))

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,SELECT FLOOR(5+RAND()*(1-5)),SELECT FLOOR(5+RAND()*(1-5)),...);

可以使用RAND(),但正如

如果未指定种子,SQL Server数据库引擎将随机分配种子值。对于指定的种子值,返回的结果始终相同

希望这对你有帮助

编辑:

所以如果你想用它来插入…我想

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, RAND(CAST( NEWID() AS varbinary )) * 5, RAND(CAST( NEWID() AS varbinary )) * 1000,...)

如果这不起作用,我将从我首先尝试的内容开始往下看,并且我没有进行测试

在一些列中插入一些随机数为1到5的行

模式:

create table friday1
(   id int auto_increment primary key,
    value1 int not null,
    value2 int not null
);
插入3行:

insert friday1(value1,value2) select floor(rand()*5)+1,floor(rand()*5)+1;
insert friday1(value1,value2) select floor(rand()*5)+1,floor(rand()*5)+1;
insert friday1(value1,value2) select floor(rand()*5)+1,floor(rand()*5)+1;
存储过程帮助程序:

drop procedure if exists insertMany;
DELIMITER $$
create procedure insertMany
(   howMany int
)
BEGIN
    DECLARE soFar int default 0;

    set howMany=least(howMany,500); -- max out at 500 regardless of IN parameter (RAND is slow)
    WHILE soFar<howMany DO
        insert friday1(value1,value2) select floor(rand()*5)+1,floor(rand()*5)+1;
        set soFar=soFar+1;
    END WHILE;
    select soFar; -- # of times in loop
END$$
DELIMITER ; 
结果:

select count(*) as theCount, 
least(min(value1),min(value2)) as theMin, 
greatest(max(value1),max(value2)) as theMax 
from friday1; 

+----------+--------+--------+
| theCount | theMin | theMax |
+----------+--------+--------+
|      203 |      1 |      5 |
+----------+--------+--------+

演示如何使用
RAND()
生成范围内的随机数。你可以把它插入你的
INSERT
语句中。我试过这样做,在值中我有值('511222',RAND()*(5-1)+1,'323632'),因为我想要1到5之间的数字。使用MYSQL Workbench不确定这是否会导致difference@Speedychuck这不起作用吗?这在insert语句中看起来如何@Zoidburg刚刚尝试过这样做:在调用本机函数floor时获取1582个不正确的参数计数。在
(10-100)
之后需要一个额外的
确定这是可行的,但是它插入为0 I have(1-5)是否应该在生成的1和5之间?确定,因为db只接受数字作为字符串grrr!我需要用一个介于1和5之间的数字填充该字段,该数字作为字符串输入。我如何解决这个问题?需要知道如何在插入中使用它:(因此,当我使用插入时,它将为该列生成介于1和5之间的数字查看我的编辑,尝试一下….如果你想要一个完整的numberCAST(FLOOR(5+RAND)()*(1-5)作为字符)但是,当我检查列接受的是TINYINT时,它现在可以工作了。所以FLOOR RAND会生成介于1和5之间的数字,但不会将其插入列中,因为它试图添加一个INT,然后将其转换为字符串。如何添加为TINYINT是我的问题。@Alex GroganDo你真的想使用TINYINT吗?它的范围只有0-255?您正在打赌更改表的设计,使其改为INT
select count(*) as theCount, 
least(min(value1),min(value2)) as theMin, 
greatest(max(value1),max(value2)) as theMax 
from friday1; 

+----------+--------+--------+
| theCount | theMin | theMax |
+----------+--------+--------+
|      203 |      1 |      5 |
+----------+--------+--------+