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

Fungsi MAX di mana klausa mysql

Kami tidak dapat mereferensikan hasil fungsi agregat (misalnya MAX() ) dalam WHERE klausa dari SELECT . yang sama .

Pola normatif untuk memecahkan masalah jenis ini adalah dengan menggunakan tampilan sebaris, kira-kira seperti ini:

SELECT t.firstName
     , t.Lastname
     , t.id
  FROM mytable t
  JOIN ( SELECT MAX(mx.id) AS max_id
           FROM mytable mx
       ) m
    ON m.max_id = t.id

Ini hanyalah salah satu cara untuk mendapatkan hasil yang ditentukan. Ada beberapa pendekatan lain untuk mendapatkan hasil yang sama, dan beberapa di antaranya bisa jadi kurang efisien daripada yang lain. Jawaban lain menunjukkan pendekatan ini:

 WHERE t.id = (SELECT MAX(id) FROM ... )

Terkadang, pendekatan paling sederhana adalah menggunakan ORDER BY dengan LIMIT. (Perhatikan bahwa sintaks ini khusus untuk MySQL)

SELECT t.firstName
     , t.Lastname
     , t.id
  FROM mytable t
 ORDER BY t.id DESC
 LIMIT 1

Perhatikan bahwa ini hanya akan mengembalikan satu baris; jadi jika ada lebih dari satu baris dengan nilai id yang sama, maka ini tidak akan mengembalikan semuanya. (Kueri pertama akan mengembalikan SEMUA baris yang memiliki nilai id yang sama.)

Pendekatan ini dapat diperluas untuk mendapatkan lebih dari satu baris, Anda bisa mendapatkan lima baris yang memiliki nilai id tertinggi dengan mengubahnya menjadi LIMIT 5 .

Perhatikan bahwa kinerja pendekatan ini sangat bergantung pada indeks yang sesuai yang tersedia (yaitu dengan id sebagai KUNCI UTAMA atau sebagai kolom terdepan dalam indeks lain.) Indeks yang sesuai akan meningkatkan kinerja kueri menggunakan semua pendekatan ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Recursive dapatkan semua anak dari orang tua

  2. Tautan dinamis MySQL untuk mengambil baris kanan

  3. Cara Mendapatkan Data Setiap Jam di MySQL

  4. Berapa tunjangan maksimum untuk group_concat_max_len di MySQL?

  5. Pilih baris sampai jumlah total terpenuhi di kolom (mysql)