Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Nilai Isyarat Maksimum untuk Setiap ID dalam Jadual SQL?

Bagaimana untuk Mencari Nilai Isyarat Maksimum untuk Setiap ID dalam Jadual SQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-06 12:39:41525semak imbas

How to Find the Maximum Signal Value for Each ID in a SQL Table?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn