En hjælpsom redaktør tilføjede 'Vælg' før hver sætning, men pointen med dette element er, at det kan generere unikke nøgler for hver række i en returnering, ikke kun ét element (for det vil jeg bruge Rand()-funktionen). :Vælg top 100 Rand(),* fra tblExample
Ville returnere den samme tilfældige værdi for alle 100 rækker.
Mens:Vælg top 100 ABS(CHECKSUM(NEWID()) % 10),* fra tbleeksempel
Ville returnere en anden tilfældig værdi mellem 0 og 9 på hver række i returneringen. Så selvom select gør det nemmere at kopiere og indsætte, kan du kopiere logikken ind i en select-sætning, hvis det er det, der kræves.
Dette genererer et tilfældigt tal mellem 0-9
SELECT ABS(CHECKSUM(NEWID()) % 10)
1 til 6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
3 til 6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
Dynamisk (Baseret på Eilert Hjelmeseths kommentar, opdateret for at rette fejl (+ til -))
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min
Opdateret baseret på kommentarer:
NEWID
genererer tilfældig streng (for hver række til gengæld)CHECKSUM
tager værdien af streng og opretter tal- modul (
%
) dividerer med det tal og returnerer resten (det betyder, at maks. værdi er én mindre end det tal, du bruger) ABS
ændrer negative resultater til positive- tilføj derefter en til resultatet for at eliminere 0 resultater (for at simulere et terningkast)