Det finns tillfällen då du kan behöva slumpmässigt beställa en MySQL-resultatuppsättning, t.ex. när du väljer ut några vinnare slumpmässigt för en prisdragning. Det här inlägget tittar på hur du kan göra detta och nästa MySQL-inlägg kommer att titta på hur man “slumpmässigt” beställer data över flera sidor.
Med exemplet med prisutlottningen kan vi säga att vi genomförde en enkätundersökning och skulle ge ett pris till 10 av de personer som besvarade enkäten. Dessa personer ska väljas ut slumpmässigt. Tabellen heter “survey” och vi vill ha deras kontaktuppgifter.
För att välja 10 poster från tabellen i slumpmässig ordning gör du följande:
SELECT first_name, last_name, email_address, phoneFROM surveyORDER BY RAND()LIMIT 10
Raden ORDER BY RAND() är det som gör att resultatmängden blir slumpmässig och raden LIMIT 10 returnerar bara de 10 första resultaten.
Att ordna en resultatmängd slumpmässigt på det här sättet är ineffektivt och blir långsamt på stora resultatmängder, eftersom det slumpmässiga numret måste tillämpas på varje rad innan den sorteras. För att välja en vinnare eller liknande omständigheter är det bra, men det är inte så användbart om du behöver sidorna med “slumpmässiga” resultat på flera sidor.
Om du behöver sidorna med data “slumpmässigt” är det inte särskilt användbart att använda RAND(), eftersom samma poster kommer att dyka upp på flera sidor, och du kommer inte att få en enhetlig datamängd när du bläddrar fram och tillbaka genom samma sidor. Jag kommer att titta på hur man gör detta i nästa veckas MySQL-inlägg. Se till att prenumerera på mitt RSS-flöde (uppgifter nedan) så att du inte missar något.