Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nilai Maksimum untuk ID Sama dalam Jadual Pangkalan Data dengan Cekap?
Pertanyaan Nilai Maks untuk ID Serupa
Dalam jadual dengan berbilang rekod berkongsi ID yang sama, anda mungkin menghadapi senario yang anda perlu dapatkan nilai maksimum untuk setiap ID. Berikut ialah pertanyaan untuk mencapai ini:
Pendekatan Subkueri:
select cur.id, cur.signal, cur.station, cur.ownerid from yourtable cur where not exists ( select * from yourtable high where high.id = cur.id and high.signal > cur.signal )
Pertanyaan ini menggunakan subkueri dengan klausa "TIDAK WUJUD" untuk mengecualikan semua baris dengan yang lebih tinggi isyarat daripada baris semasa. Dengan berbuat demikian, ia memilih baris dengan isyarat maksimum untuk setiap ID. Kelemahan yang berpotensi ialah ia boleh menyenaraikan berbilang baris untuk ID dengan nilai maksimum yang sama.
Pendekatan Sertaan Luar:
Pendekatan alternatif ialah menggunakan sambung luar dengan sambung sendiri:
select a.id, a.signal, a.station, a.ownerid from yourtable a left join yourtable b on a.id = b.id and a.signal < b.signal where b.id is null
Pertanyaan ini menggunakan sambung luar untuk mencari baris tanpa sebarang isyarat yang lebih tinggi. Dengan menggunakan syarat yang menyemak nilai nol dalam baris bercantum, ia menapis keluar baris dengan isyarat yang lebih rendah. Pendekatan ini menjamin satu baris untuk setiap ID dengan isyarat maksimum.
Contoh:
Menggunakan jadual yang disediakan, pertanyaan akan mengembalikan hasil berikut:
Subkueri Pendekatan:
ID | Signal | Station | OwnerID |
---|---|---|---|
111 | -120 | Home | 1 |
222 | -95 | Work | 1 |
Pendekatan Sertaan Luar:
ID | Signal | Station | OwnerID |
---|---|---|---|
111 | -120 | Home | 1 |
222 | -95 | Work | 1 |
Kesimpulan:
Kedua-dua pendekatan mencapai matlamat yang sama untuk mendapatkan semula nilai isyarat maksimum untuk setiap ID. Pendekatan subkueri mungkin lebih cekap untuk set data kecil, manakala pendekatan gabungan luar boleh menjadi lebih cekap untuk set data yang lebih besar, terutamanya jika terdapat berbilang baris dengan isyarat yang sama.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Maksimum untuk ID Sama dalam Jadual Pangkalan Data dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!