SQL Server: wie kann ich das erzeugen der einzigartigen Zufallszahl-in jeder Zeile der Aufzeichnung?
Ich bin mit SQL Server 2000. Ich möchte zum generieren von Zufallszahlen ohne Wiederholung in jeder Zeile. Aber mein code funktioniert nicht. Ich habe versucht, viele Male, aber ich kann nicht fix die Wiederholung problem. Mein code wie folgt: ich habe "den Fall" zu behandeln doppelter Anzahl, aber nicht arbeiten. Wer kann mir helfen? So viel Dank!
DECLARE @index INT
,@ran_no INT
,@counter INT
,@i INT
SET @i = 1
WHILE @i <= 18
BEGIN
SELECT @index = count(basket_seq)
FROM dbo.test
WHERE basket_seq = @i
AND flag = 'left'
BEGIN
UPDATE dbo.test
SET @ran_no = convert(INT, 1 + @index * RAND(CHECKSUM(NEWID())))
,@ran_no = (
CASE
WHEN convert(INT, 1 + @index * RAND(CHECKSUM(NEWID()))) NOT IN (
SELECT seq_no
FROM dbo.test
WHERE basket_seq = @i
AND flag = 'left'
)
THEN @ran_no
END
)
,seq_no = @ran_no
WHERE basket_seq = @i
AND flag = 'left'
END
SET @i = @i + 1
END
- Warum verwenden Sie eine case-Anweisung? nur erklären
- weil ich will, um zu prüfen, ob die zufällige Anzahl der bereits in der Spalte "seq_no". FALL, WENN convert(INT, 1 + @ - index * RAND(PRÜFSUMME(NEWID()))) not IN (SELECT seq_no VON dbo.test WO basket_seq = @i UND flag = 'Links')
- ich glaube nicht, NEWID() existiert in SQL 2000.
- random ist ein Wunsch oder Ziel ist es, eine eindeutige Nummer? die Frage ist, weil Sie schrieb "ich würde gerne zu", wie wenn dies war ein Wunsch und keine Voraussetzung.
- eigentlich will ich weisen eindeutige Nummer für jede Zeile des Datensatzes. Wenn ich nur hinzufügen Sequenz-Nummer(1,2,3,4..........) zu jedem Datensatz, ich fürchte, es würde zeigen die gleichen Datensätze jedes mal. So habe ich versucht, eindeutige Zufallszahl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach mal diese link
Für Ihre update-Anweisung, verwenden wie diese.
Auch als pro MSDN-link Sie können die Random-Funktion auch für Sqlserver2000.
http://blog.sqlauthority.com/2007/04/29/sql-server-random-number-generator-script-sql-query/
Als Sie sagte, Sie wollen eingestellten Wert in seq_no, in der Abfrage, die Sie eingestellt haben @ran_no zu seq_no so sollten Sie versuchen, wie unten.
Zum generieren von Zufallszahlen ohne Wiederholung in jeder Zeile. Versuchen Sie etwas, das wie oben. wird Ihnen helfen.