2017-07-30 91 views
0

我正在制作一个SQL表,用于存储students的数据。对于一个名为roll_number的列,我想在两个值之间生成一个随机数,比如4000和5000,并将其分配给每行的列,同时确保该值之前没有使用过,因为卷号必须是唯一的。sql - 为每一行生成一个唯一的随机值

任何人都可以给我查询我可以用来设置这个吗?我对SQL比较陌生。

+0

https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_rand – JGFMK

+0

SELECT FLOOR(4000+(RAND()*(5000-4000 + 1)));会给你4000 - > 5000包容范围 - 你可以在插入之前检查是否已经使用。 – JGFMK

回答

2
Select x.*, @i := @i + 1 randid from my_table, (Select @i:=4000) vars order by rand(); 
+0

这很好的作品。谢谢! :) – Vaibhav

-1

您可以创建并检查随机数是否已经存在或不存在。

/// Get the unique roll_number 
SELECT FLOOR(4000 + RAND() * 1000) AS roll_number 
FROM student 
WHERE roll_number NOT IN (SELECT roll_number FROM table) 
LIMIT 1 

UPDATE student set roll_number = ? WHERE student_id = ? 
+0

这将给范围4000 - > 9000!否则,我会标记为正确的。看到我的评论下的问题.... – JGFMK