Výběr náhodných záznamů v MS SQL
- 31. Červenec 2009
- Publikováno v MS SQL
- Napište komentář
Na první pohled složitý úkol má velmi jednoduché řešení. Tím je použití funkce NEWID() v klauzuli ORDER BY výběrového dotazu. Pro množinu vybraných záznamů se tak náhodně vygenerují jedinečné identifikátory, které po seřazení změní původní pořadí záznamů.
Z takto náhodně seřazených záznamů si pomocí funkce TOP vybereme námi požadovaný počet záznamů.
V následujícím příkladu je vidět, že vybrané záznamy jsou vypsány v jiném pořadí, než jsou uloženy v databázi. Pokud by byl dotaz spuštěn opakovaně, bude pořadí záznamů odlišné.
uid jmeno prijmeni
3 Marek Holý
9 Magda Dlouhá
1 Petr Kos
7 Petr Pan
8 Jan Noha
6 Jana Zlá
Pokud chceme vybrat náhodné záznamy z množiny určené pomocí složitějších dotazů, je vhodné použít klauzuli ORDER BY NEWID() na co nejvyšší úrovni. Omezí se tak počet generovaných identifikátorů a tím i náročnost pro server (v uvedených příkladech je to samozřejmě jedno
).
(SELECT * FROM lide WHERE uid> 6) a
ORDER BY NEWID();
uid jmeno prijmeni
7 Petr Pan
9 Magda Dlouhá
Dosud žádný komentář.