Selezionare una sola riga (record) in modo random su un database MySql

Qual'è il modo migliore e più veloce per selezionare una sola riga (record) in modo random (casuale) da una tabella MySql che contiene diverse migliaia di record?

In Corso 2
MySql 12-07-2018 2 Risposte 1866 Visite 0
Bartolomeo Fintesan

Bartolomeo Fintesan

Autore di questa domanda

Risposte ( 2 approvate )

  1. Giacomo Barrile
    0
    12-07-2018 12:52:05
    Rispondi

    Potresti scrivere un qualcosa di simile:

    SELECT * FROM table WHERE id=CEIL(RAND() * (SELECT COUNT(*) FROM table)));

    questo presume però che la tua chiave primaria id non preveda salti, ossia sia incrementale e non abbia record cancellati, poichè potrebbe capitarti lo sfortunato caso che ritorni un insieme (riga) vuota.

  2. Giorgio Borelli
    -1
    12-07-2018 12:45:16
    Rispondi

    Banalmente io farei così:

    SELECT * FROM MyTable ORDER BY RAND() LIMIT 1

    anche se al crescere dei numeri dei records presenti nella tua tabella le prestazioni della 'ORDER BY RAND' decadono velocemente.

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

 Domanda Precedente

 Elenco Domande 

Domanda Successiva