Select
僅選擇特定列具有不同/多個值的那些記錄
下面是我的會員表的一個例子。在電子郵件欄位中有一些具有多個值的記錄。我只想選擇具有多個電子郵件值的那些記錄:
成員表
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 失去了,因為他只有一個電子郵件地址條目。
我應該澄清一下,我的會員表有超過 4 列。電話和地址等還有額外的列。一個成員可能有多個條目,因為他/她有多個電話號碼或地址。我只想擷取那些擁有多個電子郵件地址的人。
這是數據庫清理的一部分,將添加一個主鍵。我應該進一步澄清,有些人可能有多個具有相同電子郵件地址的條目。在這個階段,我不想擷取具有相同電子郵件地址的多個條目,但只有那些具有多個具有不同電子郵件地址的條目的條目。
您可以執行以下操作:
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
select x.* from member as x where x.id IN ( select id from member group by id having count(distinct email) > 1 )