2016-07-02 54 views
0

我有一個表,看起來像這樣已被分組並分配 如何使用SQL Server

實施例的一組數

來查詢一個組內的數據:

groupnumber userid username borrower name 
1   1  userA  A 
1   1  userA  B 
2   2  userB  C 
2   2  userB  D 
2   3  userC  D 

在這個例子中我已示出組號1爲理想結果。每個組只能有一個用戶標識(多個條目可以),但可以有不同的借用者名稱。 < ---這組我想保持

對於兩組那裏有我需要的組完全從列表中移除,或只是查詢,所以我可以標記爲衝突的數據組

組內不同的用戶ID

我得到了這個設置的第一部分,所以這些組被顯示,但第二部分我似乎無法弄清楚。任何幫助,將不勝感激

基本上我想寫一個查詢,以便該表將得到這個結果

groupnumber userid username borrower name 
1   1  userA  A 
1   1  userA  B  

因此除去groupnumber 2一起由於用戶ID的werent組

中的所有同

回答

0

對不起,當我發佈它的代碼已經變得流血了。我會盡量葉奧爾德Markuppe Editorre,看看我是否可以修復它:

DELETE FROM TABLE_NAME 
WHERE GROUPNUMBER IN (
    SELECT GROUPNUMBER 
    FROM TABLE_NAME 
    WHERE COUNT(DISTINCT USERNAME) > 1 
) 
+0

再次感謝。與數名分明是非常有用的。我可以開始使用它來處理其他情況 –

+0

您不能像在這裏那樣在「where」子句中使用聚合。你測試了這個查詢嗎? – sstan

0

如果你只是想編寫一個返回那裏羣體有一個userid行的查詢:

select * 
    from tbl 
where groupnumber in (select groupnumber 
         from tbl 
         group by groupnumber 
         having count(distinct userid) = 1) 

如果您要真正刪除其中基團有多個用戶ID,以便表只與您感興趣的行左行:

delete tbl 
where groupnumber in (select groupnumber 
         from tbl 
         group by groupnumber 
         having count(distinct userid) > 1)