Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wybrać wiersz maksymalnej wartości w tabeli mysql?

Musisz przeczytać o group by klauzula.

MySQL jest o wiele bardziej liberalny niż powinien, wprowadzając zamieszanie w procesie. Zasadniczo każda kolumna bez agregatu powinna być uwzględniona w group by klauzula. Ale cukier składniowy MySQL pozwala „zapomnieć” o kolumnach. Kiedy to zrobisz, MySQL wypluwa dowolną wartość z zestawu, według którego grupuje. W twoim przypadku pierwszy wiersz w zestawie to bob , więc to zwraca.

Twoje pierwsze oświadczenie (za pomocą max() bez group by ) jest po prostu niepoprawne.

Jeśli chcesz jednego z najstarszych użytkowników, order by age desc limit 1 to właściwy sposób postępowania.

Jeśli chcesz wszystkich najstarszych użytkowników, potrzebujesz podwyboru:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest różnica między typami DATE, TIME, DATETIME i TIMESTAMP?

  2. Docker MySQL - nie można połączyć się z aplikacji Spring Boot do bazy danych MySQL

  3. Jak utrzymujesz kontrolę wersji swojej struktury bazy danych?

  4. Jak wybrać wiele wierszy według wielokolumnowego klucza podstawowego w MySQL?

  5. Jak stworzyć indeks w MySQL