Există momente în care ar putea fi necesar să ordonați aleatoriu un set de rezultate MySQL, de exemplu atunci când alegeți aleatoriu câțiva câștigători pentru o tragere la sorți. Această postare analizează modul în care ați putea face acest lucru, iar următoarea postare MySQL va analiza ordonarea “aleatorie” a datelor pe mai multe pagini.
Utilizând exemplul extragerii de premii, să spunem că am efectuat un sondaj și urma să oferim un premiu la 10 dintre persoanele care au completat sondajul. Aceste persoane urmează să fie alese la întâmplare. Tabelul se numește “sondaj” și dorim datele lor de contact.
Pentru a selecta 10 înregistrări din tabel în ordine aleatorie, faceți următoarele:
SELECT first_name, last_name, email_address, phoneFROM surveyORDER BY RAND()LIMIT 10
Linia ORDER BY RAND() este cea care face ca setul de rezultate să fie aleatoriu, iar linia LIMIT 10 returnează doar primele 10 rezultate.
Ordonarea unui set de rezultate în mod aleatoriu în acest mod este ineficientă și va fi lentă în cazul seturilor de rezultate mari, deoarece numărul aleatoriu trebuie aplicat fiecărui rând înainte de a fi sortat. În scopul alegerii unui câștigător sau în circumstanțe similare, este excelent, dar nu este atât de util dacă aveți nevoie să afișați rezultate “aleatorii” pe mai multe pagini.
Dacă aveți nevoie să afișați date “aleatoriu”, utilizarea RAND() nu este foarte utilă, deoarece aceleași înregistrări vor apărea pe mai multe pagini și nu veți obține un set de date coerent pe măsură ce treceți înainte și înapoi prin aceleași pagini. Voi vedea cum se poate face acest lucru în articolul despre MySQL de săptămâna viitoare. Asigurați-vă că vă abonați la feed-ul meu RSS (detalii mai jos) pentru a nu-l pierde.