Der er tidspunkter, hvor du måske har brug for tilfældig rækkefølge af et MySQL-resultatsæt, f.eks. når du tilfældigt vælger nogle vindere til en lodtrækning. Dette indlæg ser på, hvordan du kan gøre dette, og det næste MySQL-indlæg vil se på “tilfældig” bestilling af data på tværs af flere sider.
Hvis vi bruger eksemplet med præmielodtrækningen, lad os sige, at vi gennemførte en undersøgelse og ville give en præmie til 10 af de personer, der gennemførte undersøgelsen. Disse personer skal vælges tilfældigt. Tabellen hedder “survey”, og vi vil have deres kontaktoplysninger.
For at vælge 10 poster fra tabellen i tilfældig rækkefølge skal du gøre følgende:
SELECT first_name, last_name, email_address, phoneFROM surveyORDER BY RAND()LIMIT 10
Retten ORDER BY RAND() er det, der gør resultatsættet tilfældigt, og linjen LIMIT 10 returnerer kun de første 10 resultater.
Ordering af et resultatsæt tilfældigt på denne måde er ineffektivt og vil være langsomt på store resultatsæt, fordi det tilfældige tal skal anvendes på hver række, før den sorteres. Med henblik på at vælge en vinder eller lignende former for omstændigheder er det fantastisk, men det er ikke så nyttigt, hvis du har brug for at side “tilfældige” resultater over flere sider.
Hvis du har brug for at side data “tilfældigt” ved hjælp af RAND() er det ikke særlig nyttigt, fordi de samme poster vises på flere sider, og du vil ikke få et konsistent datasæt, når du bladrer frem og tilbage gennem de samme sider. Jeg vil se på hvordan man gør dette i næste uges MySQL indlæg. Sørg for at abonnere på mit RSS-feed (detaljer nedenfor), så du ikke går glip af det.