Eventuali duplicati:
How to request a random row in SQL?Mysql 1 caso Row
È questo il modo corretto di fare questo?
$query = 'SELECT * FROM gameids ORDER BY timestamp RAND LIMIT 1';
Eventuali duplicati:
How to request a random row in SQL?Mysql 1 caso Row
È questo il modo corretto di fare questo?
$query = 'SELECT * FROM gameids ORDER BY timestamp RAND LIMIT 1';
Errato. Non puoi ordinare per colonna (afaik) se vuoi che diventi casuale.
$query = 'SELECT * FROM gameids ORDER BY RAND() LIMIT 1';
Non è necessario dire quale colonna randomizzare, ma avete bisogno ()
dopo RAND
perché è una funzione.
SELECT
*
FROM
gameids
ORDER BY
RAND()
LIMIT 1
RAND è una funzione e non è efficace nelle grandi tabelle, perché non utilizzare gli indici.
$query = 'SELECT * FROM gameids ORDER BY RAND() LIMIT 1';
Una possibile soluzione è quella di aggiungere colonna chiamata random
e su ogni record di generare numeri casuali per essa, poi, quando si sta interrogando il database, l'ordine da questa colonna e si otterrà pseudo-casuale, ma questa volta usando gli indici
$query = 'SELECT * FROM gameids ORDER BY timestamp, random LIMIT 1';
Edit: È anche possibile effettuare RAND()
più "flessibile" mediante l'applicazione di qualche espressione come questo RAND() * MAX(numeric_column_name)
Se siete interessati a ottimizzazioni, dare un'occhiata a questo post sul blog: http://jan.kneschke.de/projects/mysql/order-by-rand/
@Marwelln è corretto.
Bene, questo è un database molto grande c'è un modo per ottenere le righe totali e quindi generare un numero casuale da ordinare? – AndrewFerrara
È innnoDB o MyISAM? Che tipo è la tua chiave primaria? Hai colonne solo con dati numerici? – ludesign
Non funziona con 'rand' -' rand() 'è una funzione. – Piskvor
@Piskvor: ho riscritto la mia risposta. – Marwelln
+1 per essere circa 30 secondi più veloce durante la digitazione! –