Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menggunakan MAX di MySQL?

Anda bisa mendapatkan semua data baris yang menggabungkan ORDER BY dan LIMIT 1 . Dalam kasus Anda, gunakan ini dua kali dan gabungkan dengan 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
  )

Cara lain adalah menentukan usia maksimum pria dan wanita (dengan subkueri):

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

Jika Anda memiliki lebih dari 2 jenis kelamin atau jika Anda memilih untuk tidak melakukan hardcode Male dan Female konstanta dalam kueri, ini dapat ditulis ulang sebagai:

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

Pertanyaan di atas memiliki perbedaan utama. Yang pertama hanya akan memberi Anda satu hasil pria dan hanya satu wanita (paling banyak). Kueri ke-2 dan ke-3 akan memberi Anda lebih dari satu bila ada banyak (laki-laki) dengan usia maksimum yang sama dan sama untuk perempuan.

Sebuah indeks pada (gender, age) akan membantu salah satu pertanyaan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara SEKARANG(), SYSDATE() &CURRENT_DATE() di MySQL

  2. Bagaimana cara memulihkan data dari MySQL .frm?

  3. Bagaimana INNER JOIN 3 tabel menggunakan CodeIgniter

  4. Bisakah Anda membagi satu alias dengan yang lain di MySQL?

  5. MySQL:ERROR 1022 (23000):Tidak dapat menulis; duplikat kunci dalam tabel '#sql-2b8_2'