T-SQL特定语法问题(简单无疑)

时间:2010-04-23 09:02:44

标签: sql-server tsql

我遇到了一个问题,我试图在某些数据上运行,我想开始的地方是描述数据。

好的,我有一个电子邮件地址列表,每个电子邮件地址都有一个唯一的ID和一个帐户ID

同样在我的表格中,我有一个自动递增的固定号码,这样我就可以定位重复的电子邮件地址

我需要做的就是这样。

Insert into duplicates
   (EMAIL,ACCOUNTID,ID)

SELECT Email,AccountID,ID
   FROM EmailAddresses

Group by Email,AccountID
   Having Count(email)>1
Order by AccountID, Email

所以基本上我想选择所有重复的电子邮件地址并将它们(以及它们的相关字段)插入到按帐户ID分解的新表中,这样我就可以对它进行更多的查询。

我一直在与这个问题进行太长时间的争斗,并且可以使用一种全新的视角。

提前干杯

3 个答案:

答案 0 :(得分:1)

SELECT *
FROM EmailAddresses e1 INNER JOIN 
   (SELECT Email, AccountId
   FROM EmailAddresses
   GROUP BY Email, AccountID
   HAVING Count(Id)>1) Dups 
      ON Dups.Email = e1.Email AND Dups.AccountId = e1.AccountId

答案 1 :(得分:1)

SELECT Email, AccountID, ID INTO duplicates
FROM EmailAddresses E
WHERE (SELECT COUNT(*) FROM EmailAddresses E1 WHERE E1.Email = E.Email) > 1
GROUP BY Email, AccountID, ID;

答案 2 :(得分:1)

确保重复表中的ID字段不是标识字段,并删除order by子句。

Insert into duplicates 
(EMAIL,ACCOUNTID,ID) 
SELECT Email,AccountID, MIN(ID)
FROM EmailAddresses 
Group by Email,AccountID 
Having Count(email)>1

如果您想要所有重复记录,请使用queen3建议的选择