Ein hilfreicher Editor fügte das 'Select' vor jeder Anweisung hinzu, aber der Punkt dieses Elements ist, dass es eindeutige Schlüssel für jede Zeile in einer Rückgabe generieren kann, nicht nur ein Element (dafür würde ich die Funktion Rand() verwenden). Zum Beispiel :Top 100 Rand(),* aus tblExample auswählen
Würde denselben zufälligen Wert für alle 100 Zeilen zurückgeben.
While:Top 100 ABS(CHECKSUM(NEWID()) % 10),* aus tblexample
auswählenWürde einen anderen zufälligen Wert zwischen 0 und 9 in jeder Zeile in der Rückgabe zurückgeben. Während die Auswahl das Kopieren und Einfügen erleichtert, können Sie die Logik in eine Auswahlanweisung kopieren, wenn dies erforderlich ist.
Dies erzeugt eine Zufallszahl zwischen 0-9
SELECT ABS(CHECKSUM(NEWID()) % 10)
1 bis 6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
3 bis 6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
Dynamisch (Basierend auf Eilert Hjelmeseths Kommentar, aktualisiert, um Fehler zu beheben (+ zu -))
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min
Basierend auf Kommentaren aktualisiert:
NEWID
erzeugt eine zufällige Zeichenfolge (für jede Zeile im Gegenzug)CHECKSUM
Nimmt den Wert der Zeichenkette und erzeugt eine Zahl- Modul (
%
) dividiert durch diese Zahl und gibt den Rest zurück (was bedeutet, dass der maximale Wert um eins kleiner ist als die von Ihnen verwendete Zahl) ABS
ändert negative Ergebnisse in positive- addieren Sie dann eins zum Ergebnis, um 0 Ergebnisse zu eliminieren (um einen Würfelwurf zu simulieren)