web-dev-qa-db-ja.com

特定の列に異なる値または複数の値を持つレコードのみを選択します

以下は私のメンバーシップ表の例です。電子メールフィールドに複数の値を持ついくつかのレコードがあります。複数のメール値を持つレコードのみを選択します。

メンバー表

ID   LASTNAME    FIRSTNAME    EMAIL
567  Jones       Carol        [email protected]
567  Jones       Carol        [email protected]
678  Black       Ted          [email protected]
908  Roberts     Cole         [email protected]
908  Roberts     Cole         [email protected]
908  Roberts     Cole         [email protected]

結果を希望します:

567  Jones       Carol        [email protected]
567  Jones       Carol        [email protected]
908  Roberts     Cole         [email protected]
908  Roberts     Cole         [email protected]
908  Roberts     Cole         [email protected]

Ted Blackが欠落しているのは、メールアドレスのエントリが1つしかないためです。

私のメンバーシップテーブルに4つ以上の列があることを明確にする必要があります。電話や住所などの追加の列があります。また、メンバーは複数の電話番号または住所を持っているため、メンバーには複数のエントリがある場合があります。複数のメールアドレスを持つ個人のみをキャプチャしたい。

これはデータベースのクリーンアップの一部であり、主キーが追加されます。一部の人が同じメールアドレスで複数のエントリを持っている可能性があることをさらに明確にする必要があります。この段階では、同じメールアドレスを持つ複数のエントリをキャプチャするのではなく、異なるメールアドレスを持つ複数のエントリを持つユーザーのみをキャプチャします。

11
AlGator

あなたは次のようなことをすることができます:

select distinct x.id, x.lastname, x.firstname, x.email
from t as x
join (
    select id
    from t
    group by id
    having count(distinct email) > 1
) as y
    on x.id = y.Id    
8
Lennart
select x.* 
from member as x
where x.id IN

    (
    select id
    from member
    group by id
    having count(distinct email) > 1
    )
3
Victor111