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


11

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

メンバー表

ID   LASTNAME    FIRSTNAME    EMAIL
567  Jones       Carol        carolj@gmail.com
567  Jones       Carol        caroljones@aol.com
678  Black       Ted          tedblack@gmail.com
908  Roberts     Cole         coleroberts@gmail.com
908  Roberts     Cole         coler@aol.com
908  Roberts     Cole         colerobersc@hotmail.com

結果を希望します:

567  Jones       Carol        carolj@gmail.com
567  Jones       Carol        caroljones@aol.com
908  Roberts     Cole         coleroberts@gmail.com
908  Roberts     Cole         coler@aol.com
908  Roberts     Cole         colerobersc@hotmail.com

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

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

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

回答:


8

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

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    

3
select x.* 
from member as x
where x.id IN

    (
    select id
    from member
    group by id
    having count(distinct email) > 1
    )
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.