在 SQL 中使用多個欄位來尋找重複記錄
基於單列辨識重複條目是一個簡單的 SQL 任務。 例如,要在 users
表中尋找重複的電子郵件:
<code class="language-sql">SELECT email, COUNT(email) FROM users GROUP BY email HAVING COUNT(email) > 1;</code>
識別多個欄位(例如電子郵件和姓名)中的重複項時,複雜性會增加。
要找出相同電子郵件和姓名組合的行,請使用以下查詢:
<code class="language-sql">SELECT name, email, COUNT(*) FROM users GROUP BY name, email HAVING COUNT(*) > 1;</code>
這會按 name
和 email
將資料分組,然後進行篩選以僅顯示那些具有多個項目的群組,從而顯示重複項。
工作原理:
HAVING
子句至關重要;它過濾分組結果,確保只傳回出現多次的 name
和 email
的組合。 典型的輸出類似:
<code>| name | email | COUNT(*) | |------|-------------|----------| | Tom | john@example.com | 2 | | Tom | tom@example.com | 2 |</code>
重要考量:
資料庫系統在對非聚合列進行分組的處理方面有所不同。 有些可能需要明確包含在 GROUP BY
子句中。 如果您的資料庫系統不支援這種隱式分組,您需要相應地調整查詢。
以上是如何根據 SQL 表中的多個欄位尋找重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!