2017-07-30 1 views
0

Ich mache eine SQL-Tabelle, die Daten für speichert. Für eine Spalte mit der Bezeichnung roll_number möchte ich eine Zufallszahl zwischen zwei Werten, z. B. 4000 und 5000, generieren und sie der Spalte für jede Zeile zuweisen, während sichergestellt wird, dass der Wert zuvor nicht verwendet wurde, da die Rollennummer eindeutig sein muss.sql - Generieren Sie einen eindeutigen Zufallswert für jede Zeile

Kann jemand mir die Frage geben, die ich für das Einrichten verwenden kann? Ich bin relativ neu in 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))); gibt Ihnen 4000 -> 5000 inklusive Reichweite - bis zu Ihnen vor dem Einsatz überprüfen, wenn bereits verwendet. – JGFMK

Antwort

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

Das funktioniert super. Vielen Dank! :) – Vaibhav

-1

Sie können erstellen und überprüfen, ob die Zufallszahl bereits existiert oder nicht.

/// 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

das wird Bereich 4000 -> 9000 geben! Sonst hätte ich es als richtig markiert. Siehe meinen Kommentar unter Frage .... – JGFMK

Verwandte Themen