Užitečný editor přidal 'Select' před každý příkaz, ale smyslem této položky je, že může generovat jedinečné klíče pro každý řádek v návratu, nikoli pouze pro jednu položku (pro to bych použil funkci Rand()). :Vyberte top 100 Rand(),* z tblExample
Vrátí stejnou náhodnou hodnotu pro všech 100 řádků.
Zatímco:Vyberte top 100 ABS(CHECKSUM(NEWID()) % 10),* z tbleexample
Vrátil by jinou náhodnou hodnotu mezi 0 a 9 na každém řádku v návratu. Takže zatímco výběr usnadňuje kopírování a vkládání, můžete zkopírovat logiku do příkazu select, pokud je to požadováno.
Toto vygeneruje náhodné číslo mezi 0-9
SELECT ABS(CHECKSUM(NEWID()) % 10)
1 až 6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
3 až 6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
Dynamické (na základě komentáře Eilert Hjelmeseths, aktualizováno za účelem opravy chyby (+ až -))
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min
Aktualizováno na základě komentářů:
NEWID
generuje náhodný řetězec (pro každý řádek na oplátku)CHECKSUM
vezme hodnotu řetězce a vytvoří číslo- modul (
%
) vydělí tímto číslem a vrátí zbytek (to znamená, že maximální hodnota je o jedna menší než číslo, které používáte) ABS
mění negativní výsledky na pozitivní- pak k výsledku přidejte jeden, abyste odstranili 0 výsledků (pro simulaci hodu kostkou)