2012-01-08 21 views
17

Eventuali duplicati:
Selecting Random Rows in MySQLselezionare le righe casuali da tavolo mysql

Sto creando una semplice applicazione web utilizzando PHP e MySQL. In esso, ho bisogno di selezionare casualmente un piccolo insieme di righe da una tabella in un ordine casuale. Come posso ottenere una cosa simile usando MySQL?

+2

si prega di ricerca prima di fare domande. La ricerca del titolo esatto della tua domanda produce [questo] (http://stackoverflow.com/questions/1283640) e molte altre domande simili. – DaveRandom

+0

[MySQL seleziona 10 righe casuali da 600K righe veloci] (https://stackoverflow.com/q/4329396/6521116) –

risposta

44
SELECT * FROM table ORDER BY RAND() LIMIT 10; 

Edit:

Informazioni utili sulla funzione di MySQL RAND() può essere trovato here.

+0

Ouch ... I've got> 500M rows! Questo è un po 'lento ... –

+2

Ci sono altre opzioni performanti, se si dispone di una chiave primaria sequenziale, precompute un intervallo di ID nella lingua di propria scelta e fare un 'SELECT ... WHERE id IN (x)' ' –

+0

Query seleziona count (*) dagli utenti; 'restituisce 10293453. Query' SELECT id FROM users ORDER BY RAND() LIMIT 10; 'esegue 5 sec. – klay

5
select * from table order by rand() limit 10 

noti che order by rand() con ampio set di dati è molto lento, ma nel tuo caso non è un problema.

3

è possibile farlo utilizzando la funzione RAND().

SELECT questine FROM tablename ORDER BY RAND() LIMIT 10 

selezionerà 10 questines a caso sotto il presupposto questine è memorizzato in campo questine

Problemi correlati