2012-07-09 19 views
0

我在表格中有一些數據污染,我很難清除...我已經修復了污染的原因,所以它不會再發生,但是現在需要一些記錄刪除,我很難弄清楚如何。如何根據一次列中的重複項而從表中刪除行,但是在另一列中有不同?

問題的性質如下。

我有了用戶id和組id的表。對於一個用戶來說,這是有效的,因此我不能用獨特的關聯來解決這個問題。

就我而言,假設組4和組5是互斥的(意味着用戶不能同時屬於這兩個組)。

我需要在user_groups表上運行刪除,我可以說(英語): 如果userID = X且組ID = 4,則刪除此行如果還有一行其中userID = X和該組ID = 5

我不想刪除所有的行,其中的組ID = 4,只有那些適用於用戶誰也有含組ID行= 5

所有幫助非常感謝。

回答

1

這將刪除所有4組,在組5

DELETE FROM user_groups AS G1 
WHERE G1.groupID=4 
    AND G1.userID IN (SELECT G2.userID FROM user_groups 
        WHERE G2.userID=G1.userID AND G2.GroupID=5) 
+0

感謝有重複的用戶!看起來會起作用 – 2012-07-09 23:35:29

相關問題