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

Como selecionar uma linha de valor máximo na tabela mysql


Você precisa ler sobre o group by cláusula.

O MySQL está sendo muito mais permissivo do que deveria, introduzindo confusão no processo. Basicamente, qualquer coluna sem um agregado deve ser incluída no group by cláusula. Mas o açúcar sintático do MySQL permite "esquecer" as colunas. Quando você faz isso, o MySQL cospe um valor arbitrário do conjunto pelo qual está agrupando. No seu caso, a primeira linha do conjunto é bob , então ele retorna isso.

Sua primeira instrução (usando max() sem um group by ) está simplesmente incorreto.

Se você quiser um dos usuários mais antigos, order by age desc limit 1 é a forma correta de proceder.

Se você quiser todos os usuários mais antigos, precisará de uma subseleção:
SELECT p.* FROM people p WHERE p.age = (select max(subp.age) from people subp);