Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Grupo de resultados aleatórios do MySQL por ordem


Sua consulta é contra o padrão sql porque você lista colunas na lista de seleção que você não lista na cláusula group by, nem estão sujeitas a funções agregadas, como count(). O MySQL permite essa funcionalidade em determinadas configurações do modo sql.

No entanto, mesmo se esta funcionalidade habilitada, o MySQL tem restrições em os dados escolhidos nos campos não agregados :

Portanto, em vez de usar group by, use a classificação e a cláusula limit para limitar a saída:
select * from job
    where type = 1
    order by rand()
    limit 1

Por favor, note também que este método de seleção aleatória é muito intensivo em recursos, uma vez que o MySQL tem que primeiro ordenar todo o conjunto de resultados sem usar nenhum índice. Existem outras maneiras de selecionar dados aleatoriamente de uma tabela sem usar order by rand() .