Ordinare a caso un set di risultati MySQL

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.