sql >> Database >  >> RDS >> Mysql

Hoe een rij met maximale waarde in de mysql-tabel te selecteren?

U moet de group by . lezen clausule.

MySQL is veel toleranter dan het zou moeten, wat verwarring in het proces veroorzaakt. In principe moet elke kolom zonder aggregaat worden opgenomen in de group by clausule. Maar MySQL-syntactische suiker maakt het mogelijk kolommen te "vergeten". Wanneer je dat doet, spuugt MySQL een willekeurige waarde uit van de set waarop het is gegroepeerd. In jouw geval is de eerste rij in de set bob , dus het geeft dat terug.

Je eerste statement (met behulp van max() zonder een group by ) is gewoon onjuist.

Als je een van de oudste gebruikers wilt, order by age desc limit 1 is de juiste manier om verder te gaan.

Als je alle oudste gebruikers wilt, heb je een subselectie nodig:

SELECT p.* FROM people p WHERE p.age = (select max(subp.age) from people subp);


  1. Wanneer en waarom mysqli_fetch_row, mysqli_fetch_object, mysqli_fetch_assoc, mysqli_fetch_array gebruiken

  2. MySQL en PHP:UTF-8 met Cyrillische tekens

  3. Wat is MariaDB Enterprise en hoe beheer je het met ClusterControl?

  4. Benoemde tijdzones instellen in MariaDB