Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвам MAX в MySQL?

Можете да получите всички данни на ред, комбинирайки ORDER BY и LIMIT 1 . Във вашия случай използвайте това два пъти и комбинирайте с 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
  )

Друг начин е да намерите максималната възраст на мъжете и жените (с подзаявки):

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'
          )
      )

Ако имате повече от 2 пола или предпочитате да не кодирате твърдо Male и Female константи в заявката, това може да бъде пренаписано като:

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

Горните заявки имат основна разлика. Първият ще ви даде само един мъжки и само един женски резултат (най-много). 2-ра и 3-та заявка ще ви даде повече от една, когато има много (мъже) с еднаква максимална възраст и по подобен начин за жени.

Индекс на (gender, age) ще помогне на всяка заявка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Промяна на бекенда на базата данни на Django от MySql на PostgreSQL

  2. java.sql.SQLException:Не е намерен подходящ драйвер за тест на localhost

  3. Избор на прост месец на Laravel

  4. MySql Cursor - Създаване на процедура

  5. Вземете променлива MIN Дата въз основа на маркер в ред