sql >> Databáze >  >> RDS >> Mysql

Jak vybrat řádek maximální hodnoty v tabulce mysql

Musíte si přečíst group by doložka.

MySQL je mnohem tolerantnější, než by mělo, což vnáší do procesu zmatek. V zásadě by každý sloupec bez agregace měl být zahrnut do group by doložka. Ale syntaktický cukr MySQL umožňuje "zapomenout" sloupce. Když to uděláte, MySQL vyplivne libovolnou hodnotu ze sady, podle které je seskupená. Ve vašem případě je první řádek v sadě bob , takže to vrátí.

Váš první příkaz (pomocí max() bez group by ) je prostě nesprávný.

Pokud chcete jednoho z nejstarších uživatelů, order by age desc limit 1 je správný způsob, jak pokračovat.

Pokud chcete všechny nejstarší uživatele, potřebujete podvýběr:

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


  1. Základní SQL dotazy

  2. Vložení html kódu do tabulky mysql

  3. Java a SQL:vrátí hodnotu null nebo vyvolá výjimku?

  4. Riziko při používání dynamické paměti v rámci Hyper-V