2012-07-09 17 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

相关问题