Un utile editor ha aggiunto "Seleziona" prima di ogni istruzione, ma il punto di questo elemento è che può generare chiavi univoche per ogni riga in un ritorno, non solo un elemento (per questo vorrei utilizzare la funzione Rand()). Ad esempio :Seleziona i primi 100 Rand(),* da tblExample
Restituirebbe lo stesso valore casuale per tutte le 100 righe.
Mentre:Seleziona i primi 100 ABS(CHECKSUM(NEWID()) % 10),* da tblexample
Restituirebbe un valore casuale diverso compreso tra 0 e 9 su ogni riga nel ritorno. Quindi, mentre select rende più facile copiare e incollare, puoi copiare la logica in un'istruzione select se è ciò che è richiesto.
Questo genera un numero casuale compreso tra 0 e 9
SELECT ABS(CHECKSUM(NEWID()) % 10)
da 1 a 6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
da 3 a 6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
Dinamico (basato sul commento di Eilert Hjelmeseths, aggiornato per correggere i bug da (+ a -))
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min
Aggiornato in base ai commenti:
NEWID
genera una stringa casuale (per ogni riga in cambio)CHECKSUM
prende valore di stringa e crea numero- modulo (
%
) divide per quel numero e restituisce il resto (il che significa che il valore massimo è uno in meno rispetto al numero che usi) ABS
cambia i risultati negativi in positivi- quindi aggiungine uno al risultato per eliminare 0 risultati (per simulare un lancio di dadi)