0

我的表中有一些数据污染,我很难删除......我已经修复了污染的原因,所以它不会再次发生,但是我现在需要删除一堆记录并且我很难弄清楚怎么做。

问题的性质如下。

我有一个包含 userIds 和 groupIds 的表。用户存在于多个组中是有效的,所以这不是我可以通过唯一关联解决的问题。

就我而言,假设第 4 组和第 5 组是互斥的(这意味着用户不能同时属于两者)。

我需要在 user_groups 表上运行删除,我可以说(用英语):如果 userID = X 和 group ID = 4,则删除这一行 如果还有一行 userID = X 和 groupID = 5。

我不想删除 groupID = 4 的所有行,只删除那些适用于也有包含 groupID = 5 的行的用户的行。

非常感谢所有帮助。

4

1 回答 1

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)
于 2012-07-09T23:24:29.000 回答