Pertanyaan Isyarat Maks untuk Setiap ID
Soalan:
Diberikan jadual dengan berbilang isyarat nilai yang dikaitkan dengan setiap ID, bagaimanakah pertanyaan boleh ditulis untuk mendapatkan semula nilai isyarat maksimum bagi setiap ID unik? Pertimbangkan jadual contoh berikut:
ID Signal Station OwnerID 111 -120 Home 1 111 -130 Car 1 111 -135 Work 2 222 -98 Home 2 222 -95 Work 1 222 -103 Work 2
Jawapan:
Untuk mendapatkan semula nilai isyarat maksimum bagi setiap ID tanpa menjejaskan lajur lain seperti Station dan OwnerID, self- join boleh digunakan:
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 menggabungkan jadual dengan dirinya sendiri untuk mencipta produk Cartesian. Untuk setiap pasangan baris, ia menyemak sama ada nilai isyarat baris kedua (tinggi) lebih besar daripada nilai isyarat baris pertama (kur). Jika nilai isyarat yang lebih tinggi ditemui untuk ID yang sama, baris semasa dikecualikan.
Hasilnya ialah jadual yang mengandungi hanya baris dengan nilai isyarat maksimum untuk setiap ID. Untuk jadual contoh, outputnya ialah:
ID Signal Station OwnerID 111 -120 Home 1 222 -95 Work 1
Atas ialah kandungan terperinci Bagaimana untuk Mencari Nilai Isyarat Maksimum untuk Setiap ID dalam Jadual SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!