Někdy můžete potřebovat náhodné uspořádání sady výsledků MySQL, například při náhodném výběru výherců pro losování. V tomto příspěvku se podíváme na to, jak byste to udělali, a v dalším příspěvku o MySQL se podíváme na “náhodné” uspořádání dat na více stránkách.
Na příkladu losování výher řekněme, že jsme provedli průzkum a chtěli jsme dát cenu 10 lidem, kteří průzkum vyplnili. Tito lidé mají být vybráni náhodně. Tabulka se jmenuje “průzkum” a my chceme jejich kontaktní údaje.
Chceme-li z tabulky vybrat 10 záznamů v náhodném pořadí, provedeme následující:
SELECT first_name, last_name, email_address, phoneFROM surveyORDER BY RAND()LIMIT 10
Řádek ORDER BY RAND() je to, co vytvoří náhodný soubor výsledků, a řádek LIMIT 10 vrátí pouze prvních 10 výsledků.
Náhodné řazení sady výsledků tímto způsobem je neefektivní a u velkých sad výsledků bude pomalé, protože náhodné číslo se musí použít na každý řádek před jeho seřazením. Pro účely výběru vítěze nebo za podobných okolností je to skvělé, ale není to tak užitečné, pokud potřebujete stránkovat “náhodné” výsledky na několika stránkách.
Pokud potřebujete stránkovat data “náhodně”, není použití funkce RAND() příliš užitečné, protože stejné záznamy se objeví na více stránkách a při listování stejnými stránkami zpět a vpřed nezískáte konzistentní soubor dat. Na to, jak to udělat, se podívám příští týden v článku o MySQL. Nezapomeňte se přihlásit k odběru mého kanálu RSS (podrobnosti níže), abyste o nic nepřišli.