2010-04-23 37 views
0

我有一個查詢的問題,我試圖在一些數據上運行,我猜想要開始的地方是描述數據。T-SQL的特定語法問題(簡單的疑問)

好了,所以我有電子郵件地址的列表,每個電子郵件地址都有一個唯一的ID和帳戶ID

而且在我的表我有一組號碼,其自動incrememnts,這將使我的目標重複的電子郵件地址

我需要做的就是這樣的事情。

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分解,所以我可以在上面運行一些進一步的querys。

我一直在和這個爭鬥太久,只能用一個全新的視角。

乾杯提前

+0

有什麼語法錯誤消息?我似乎無法注意到該查詢的任何語法錯誤。 – Amry 2010-04-23 09:10:06

回答

1

確保在重複表中的ID字段不是標識字段和條款刪除訂單。

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

如果你希望所有的重複記錄,使用select建議通過queen3

+0

這正是我正在尋找的,謝謝你和其他所有貼出所有內容的人,幫助他們,並且至少教會了我一些東西! – Yoda 2010-04-23 14:44:37

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
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;