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

Jak używać MAX w MySQL?

Możesz uzyskać wszystkie dane z wiersza, łącząc ORDER BY i LIMIT 1 . W twoim przypadku użyj tego dwa razy i połącz z UNION :

  ( SELECT * 
    FROM person 
    WHERE gender = 'Male'
    ORDER BY age DESC
    LIMIT 1
  )
UNION ALL
  ( SELECT * 
    FROM person 
    WHERE gender = 'Female'
    ORDER BY age DESC
    LIMIT 1
  )

Innym sposobem jest określenie maksymalnego wieku mężczyzn i kobiet (za pomocą podzapytań):

SELECT *
FROM person
WHERE ( gender = 'Male'
      AND age =  
          ( SELECT MAX(age) 
            FROM person 
            WHERE gender = 'Male'
          )
      )
   OR ( gender = 'Female'
      AND age =  
          ( SELECT MAX(age) 
            FROM person 
            WHERE gender = 'Female'
          )
      )

Jeśli masz więcej niż 2 płcie lub jeśli wolisz nie kodować na stałe Male i Female stałych w zapytaniu, można to przepisać jako:

SELECT p.*
FROM person AS p
  JOIN
      ( SELECT gender
             , MAX(age) AS maxage 
        FROM person 
        GROUP BY gender
      ) AS pg
    ON  pg.gender = p.gender
    AND pg.maxage = p.age

Powyższe zapytania mają zasadniczą różnicę. Pierwszy wynik daje tylko jednego mężczyznę i tylko jedną kobietę (co najwyżej). Drugie i trzecie zapytanie da ci więcej niż jedno, gdy jest wielu (mężczyzn) w tym samym maksymalnym wieku i podobnie dla kobiet.

Indeks (gender, age) pomoże w obu zapytaniach.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak zapisać dane, które użytkownik wprowadził na stronie formularza po wykonaniu skryptu?

  2. Jak sortować wiersze tabeli HTML, które są wywoływane z MySQL

  3. php + mysql + mapa google

  4. Jak znaleźć średnią różnic z ostatnich N odczytów kolumny PHP MySQL

  5. Jak zaktualizować tabelę z jednego serwera na drugi?