sql >> Databasteknik >  >> RDS >> Mysql

Hur man väljer en rad med maximalt värde i mysql-tabellen

Du måste läsa upp group by klausul.

MySQL är mycket mer tillåtande än det borde, vilket skapar förvirring i processen. I princip bör alla kolumner utan aggregat inkluderas i group by klausul. Men MySQL syntaktisk socker tillåter att "glömma" kolumner. När du gör det spottar MySQL ut ett godtyckligt värde från uppsättningen som den grupperas efter. I ditt fall är den första raden i uppsättningen bob , så det returnerar det.

Ditt första uttalande (med max() utan en group by ) är helt enkelt felaktigt.

Om du vill ha en av de äldsta användarna, order by age desc limit 1 är det korrekta sättet att gå vidare.

Om du vill ha alla de äldsta användarna behöver du ett underval:

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


  1. PDO-hämtning returnerar endast första raden

  2. Välj dynamiska kolumner i mysql

  3. Ansluter Google Spreadsheets till MySQL med JDBC

  4. Varför (och hur) dela kolumnen med master..spt_values?