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

Sådan vælger du en række med maksimal værdi i mysql-tabel

Du skal læse op på group by klausul.

MySQL er meget mere eftergivende, end det burde, hvilket introducerer forvirring i processen. Grundlæggende bør enhver kolonne uden et aggregat inkluderes i group by klausul. Men MySQL syntaktisk sukker gør det muligt at "glemme" kolonner. Når du gør det, spytter MySQL en vilkårlig værdi ud fra det sæt, som det grupperer efter. I dit tilfælde er den første række i sættet bob , så det returnerer det.

Dit første udsagn (ved hjælp af max() uden en group by ) er simpelthen forkert.

Hvis du vil have en af ​​de ældste brugere, order by age desc limit 1 er den rigtige måde at fortsætte på.

Hvis du vil have alle de ældste brugere, skal du have et undervalg:

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


  1. MySQL:Transaktioner på tværs af flere tråde

  2. Formatering af et SQL-tidsstempel med PHP

  3. Hvad er den bedste måde at skrive det første bogstav i hvert ord i en streng i SQL Server med stort

  4. System til nulstilling af adgangskode i PHP