Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Risultato casuale Raggruppa per ordine per

La tua query è contro lo standard sql perché elenchi le colonne nell'elenco di selezione che non elenchi nella clausola group by, né sono oggetto di funzioni aggregate, come count(). MySQL consente questa funzionalità in determinate impostazioni della modalità sql.

Tuttavia, anche se questa funzionalità è abilitata, MySQL ha restrizioni su i dati scelti dai campi non aggregati :

Quindi, invece di usare il raggruppamento per, usa l'ordinamento e la clausola limit per limitare l'output:

select * from job
    where type = 1
    order by rand()
    limit 1

Si prega inoltre di notare che questo metodo di selezione casuale richiede molte risorse, poiché MySQL deve prima ordinare l'intero set di risultati senza utilizzare alcun indice. Esistono altri modi per selezionare casualmente i dati da una tabella senza utilizzare order by rand() .