Ci sono momenti in cui potreste aver bisogno di ordinare a caso un set di risultati MySQL, per esempio quando scegliete alcuni vincitori a caso per un’estrazione a premi. Questo post mostra come fare questo e il prossimo post su MySQL guarderà come ordinare “a caso” i dati su più pagine.
Utilizzando l’esempio dell’estrazione a premi, diciamo che abbiamo condotto un sondaggio e vogliamo dare un premio a 10 delle persone che hanno completato il sondaggio. Queste persone devono essere scelte a caso. La tabella si chiama “sondaggio” e vogliamo i loro dettagli di contatto.
Per selezionare 10 record dalla tabella in ordine casuale, fate come segue:
SELECT first_name, last_name, email_address, phoneFROM surveyORDER BY RAND()LIMIT 10
La linea ORDER BY RAND() è ciò che rende il set di risultati casuale, e la linea LIMIT 10 restituisce solo i primi 10 risultati.
Ordinare un insieme di risultati in modo casuale in questo modo è inefficiente e sarà lento su insiemi di risultati grandi, perché il numero casuale deve essere applicato ad ogni riga prima di essere ordinato. Ai fini della scelta di un vincitore o di circostanze simili è ottimo, ma non è molto utile se avete bisogno di impaginare risultati “casuali” su più pagine.
Se avete bisogno di impaginare i dati “casualmente” usando RAND() non è molto utile perché gli stessi record appariranno su più pagine, e non otterrete un insieme di dati coerente mentre impaginate avanti e indietro le stesse pagine. Vedrò come fare questo nel post su MySQL della prossima settimana. Assicuratevi di iscrivervi al mio feed RSS (dettagli sotto) per non perdervi nulla.