1. ホーム
  2. sql

[解決済み] SQLテーブルで重複する値を検索する

2022-03-18 06:15:45

質問

1つのフィールドで簡単に重複を見つけることができます。

SELECT email, COUNT(email) 
FROM users
GROUP BY email
HAVING COUNT(email) > 1

つまり、テーブルがあるとすれば

ID   NAME   EMAIL
1    John   [email protected]
2    Sam    [email protected]
3    Tom    [email protected]
4    Bob    [email protected]
5    Tom    [email protected]

このクエリでは、John, Sam, Tom, Tomはすべて同じ email .

しかし、私が欲しいのは、同じ email name .

つまり、"Tom"、"Tom"を取得したいのです。

これが必要な理由 私はミスをして、重複する nameemail の値を指定します。さて、重複を削除/変更する必要があるので、以下のようにします。 見つける を指定します。

解決方法は?

SELECT
    name, email, COUNT(*)
FROM
    users
GROUP BY
    name, email
HAVING 
    COUNT(*) > 1

両方のカラムにグループ化するだけです。

注:古い ANSI 標準では、非集約カラムをすべて GROUP BY に含めることになっていますが、この考え方は、次のように変更されました。 機能的依存性("functional dependency")。 :

関係データベース理論では、関数従属はデータベースからの関係における2組の属性間の制約である。言い換えれば、関数従属は関係における属性間の関係を記述する制約である。

サポートに一貫性がない。