每個ID的最大訊號查詢
問題:
給定一包含多個訊號的表值與每個ID 關聯,如何編寫查詢來檢索每個唯一ID 的最大訊號值?考慮以下範例表:
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
答案:
要擷取每個ID 的最大訊號值而不影響其他欄位(如Station 和OwnerID),一個自可以使用join:
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 )
此查詢將表格與其自身連接以建立笛卡爾積。對於每一對行,它檢查第二行(高)的訊號值是否大於第一行(cur)的訊號值。如果相同 ID 找到更高的訊號值,則排除目前行。
結果是一個表格,僅包含每個 ID 具有最大訊號值的行。對於範例表,輸出將為:
ID Signal Station OwnerID 111 -120 Home 1 222 -95 Work 1
以上是如何找到 SQL 表中每個 ID 的最大訊號值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!