識別多列中的重複記錄
提出的挑戰是複製所提供的SQL 程式碼的功能,旨在識別和檢索基於兩列(即“名稱”和“城市”)組合的重複記錄。目標是排除只有一列(“名稱”或“城市”)匹配的情況,並且僅考慮兩列相同的記錄。
為了滿足此要求,提供的答案利用子查詢來計數「stuff」表中「name」和「city」組合的出現次數。此子查詢將按「name」和「city」分組的行數進行計數,並過濾掉那些計數大於 1 的組合(表示重複項)。
select name, city, count(*) as qty from [stuff] group by name, city having count(*) > 1
然後主查詢連接原始「stuff」表與子查詢結果符合「名稱」和「城市」。此連線操作有效地識別符合指定條件的重複記錄。最終結果透過排除只有一列匹配的情況來消除誤報。
select s.id, t.* from [stuff] s join ( ... select name, city, count(*) as qty from [stuff] group by name, city having count(*) > 1 ) t on s.name = t.name and s.city = t.city
因此,查詢成功檢索所需的輸出:
id name city 904834 jim London 904835 jim London 90145 Fred Paris 90132 Fred Paris 90133 Fred Paris
此方法提供了一種高效的方法基於多列識別重複記錄的通用解決方案,確保查詢結果的準確性和完整性。
以上是SQL如何根據多列高效率地識別重複記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!