偵測 SQL 資料庫中的重複帳戶付款
本指南示範如何使用 SQL 找出單一使用者的重複付款記錄,無論是否考慮郵遞區號。
辨識重複付款(沒有郵遞區號)
以下 SQL 查詢可有效辨識使用者有多筆付款與相同帳號關聯的實例:
<code class="language-sql">SELECT user_id, COUNT(*) AS payment_count FROM PAYMENT GROUP BY account_no, user_id, payment_date HAVING payment_count > 1;</code>
此查詢依 account_no
、user_id
和 payment_date
將付款記錄分組。 COUNT(*)
函數統計每個組別的付款情況,HAVING
子句過濾結果,僅顯示具有多於一筆付款(重複)的群組。
添加郵遞區號過濾以提高準確性
為了確保只有具有不同郵遞區號的付款才會被視為重複,我們修改查詢:
<code class="language-sql">SELECT user_id, account_no, payment_date, COUNT(*) AS payment_count FROM ( SELECT DISTINCT user_id, account_no, zip, payment_date FROM payment ) AS distinct_payments GROUP BY user_id, account_no, payment_date HAVING payment_count > 1;</code>
此改進的查詢利用子查詢 (distinct_payments
) 來選擇 user_id
、account_no
、zip
和 payment_date
的唯一組合。然後,主查詢將這些不同的記錄分組和計數,僅在涉及不同郵遞區號時識別重複付款。 這種方法可以更精確地分析重複付款。
以上是如何在使用和不使用郵遞區號過濾的 SQL 中尋找重複的帳戶付款?的詳細內容。更多資訊請關注PHP中文網其他相關文章!