Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để sử dụng MAX trong MySQL?

Bạn có thể lấy tất cả dữ liệu của một hàng kết hợp ORDER BYLIMIT 1 . Trong trường hợp của bạn, sử dụng điều này hai lần và kết hợp với 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
  )

Một cách khác là tính tuổi tối đa của nam và nữ (với truy vấn phụ):

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

Nếu bạn có nhiều hơn 2 giới tính hoặc nếu bạn không muốn mật mã cứng MaleFemale hằng số trong truy vấn, điều này có thể được viết lại thành:

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

Các truy vấn trên có một sự khác biệt chính. Kết quả đầu tiên sẽ cho bạn chỉ một kết quả nam và một kết quả nữ (nhiều nhất). Truy vấn thứ 2 và thứ 3 sẽ cung cấp cho bạn nhiều hơn một khi có nhiều (nam) có cùng độ tuổi tối đa và tương tự đối với nữ.

Chỉ mục về (gender, age) sẽ giúp một trong hai truy vấn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận email, xử lý và lưu chúng trên cơ sở dữ liệu của ứng dụng web của tôi

  2. MySQL QUERY LIKE không trả về kết quả nào

  3. Cách tìm bản ghi trùng lặp trong MySQL

  4. Lỗi:thuộc tính không xác định $ load

  5. Sự khác biệt giữa MySQL và SQL Server