複数の列にわたる重複レコードの特定
課題は、提供された SQL コードの機能を複製することです。これは、特定して取得することを目的としています。 「名前」と「都市」という 2 つの列の組み合わせに基づいてレコードを重複させます。目標は、「name」または「city」のいずれか 1 つの列のみが一致するケースを除外し、両方の列が同一であるレコードのみを考慮することです。
この要件に対処するために、提供された回答ではサブクエリを利用してカウントします。 「stuff」テーブル内の「name」と「city」の両方の組み合わせの出現。このサブクエリは、「name」と「city」の両方でグループ化された行をカウントし、重複を示すカウントが 1 より大きいそれらの組み合わせを除外します。
select name, city, count(*) as qty from [stuff] group by name, city having count(*) > 1
その後、メイン クエリは元の "stuff" テーブルに結合します。サブクエリの結果を使用して、「名前」と「都市」の両方に一致します。この結合操作は、指定された基準を満たす重複レコードを効果的に識別します。最終的な結果では、1 つの列のみが一致するケースを除外することで誤検知が排除されます。
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 中国語 Web サイトの他の関連記事を参照してください。