Ho una tabella con un milione di righe, come faccio a selezionare il valore più comune (il valore che appare più nella tabella) da un campo?
È necessario raggruppare per colonna interessante e per ogni valore, selezionare il valore stesso e il numero di righe in cui appare.
Quindi è una questione di ordinamento (per mettere il valore più comune prima) e limitare i risultati a una sola riga.
Nel modulo di richiesta:
SELECT column, COUNT(*) AS magnitude FROM table GROUP BY column ORDER BY magnitude DESC LIMIT 1
Questo thread dovrebbe far luce sul tuo problema.
Fondamentalmente, usa COUNT()
con una clausola GROUP BY
:
SELECT foo, COUNT(foo) AS fooCount FROM table GROUP BY foo ORDER BY COUNT(foo) DESC
E per ottenere solo il primo risultato (più comune), aggiungi
LIMIT 1
Alla fine della tua domanda.
Nel caso in cui non sia necessario restituire la frequenza del valore più comune, è ansible utilizzare:
SELECT foo FROM table GROUP BY foo ORDER BY COUNT(foo) DESC LIMIT 1
Questo ha l’ulteriore vantaggio di restituire solo una colonna e quindi di lavorare in sottoquery.