【SQL】指定した複数カラムが重複しているかをチェックするクエリ

登場するカラムを全て、VARCHARに変換し、結合します。
それをGroupByでまとめてカウントすることで、重複しているレコードを探し出します。
サンプルはPestroです。
COALESCEをつけているのは、値がNULLの場合はCONCATした結果もNULLになってしまうので。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SELECT CONCAT( COALESCE(json_format(CAST(order_info AS JSON)), ''), COALESCE(CAST(order_date AS VARCHAR), ''), COALESCE(CAST(customer_id AS VARCHAR), '') ) AS concat_value, COUNT(*) FROM "sample_db"."order_table" GROUP BY CONCAT( COALESCE(json_format(CAST(order_info AS JSON)), ''), COALESCE(CAST(order_date AS VARCHAR), ''), COALESCE(CAST(customer_id AS VARCHAR), '') ) HAVING COUNT(*) >= 2; |