2017-07-30 145 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