我正在製作一個SQL表,用於存儲students
的數據。對於一個名爲roll_number
的列,我想在兩個值之間生成一個隨機數,比如4000和5000,並將其分配給每行的列,同時確保該值之前沒有使用過,因爲卷號必須是唯一的。sql - 爲每一行生成一個唯一的隨機值
任何人都可以給我查詢我可以用來設置這個嗎?我對SQL比較陌生。
我正在製作一個SQL表,用於存儲students
的數據。對於一個名爲roll_number
的列,我想在兩個值之間生成一個隨機數,比如4000和5000,並將其分配給每行的列,同時確保該值之前沒有使用過,因爲卷號必須是唯一的。sql - 爲每一行生成一個唯一的隨機值
任何人都可以給我查詢我可以用來設置這個嗎?我對SQL比較陌生。
Select x.*, @i := @i + 1 randid from my_table, (Select @i:=4000) vars order by rand();
這很好的作品。謝謝! :) – Vaibhav
您可以創建並檢查隨機數是否已經存在或不存在。
/// 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 = ?
這將給範圍4000 - > 9000!否則,我會標記爲正確的。看到我的評論下的問題.... – JGFMK
https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_rand – JGFMK
SELECT FLOOR(4000+(RAND()*(5000-4000 + 1)));會給你4000 - > 5000包容範圍 - 你可以在插入之前檢查是否已經使用。 – JGFMK