我在桌子上有一些数据污染,我很难移除...我已经修复了污染的原因,所以它不会再发生,但我现在需要一堆记录删除,我很难搞清楚如何。
问题的性质如下。
我有一个包含userIds和groupIds的表。它对于用户存在于多个组中是有效的,因此这不是我可以通过唯一关联解决的问题。
就我而言,假设第4组和第5组是互斥的(意味着用户不能同时属于这两者)。
我需要在user_groups表上运行一个删除,我可以说(英文): 如果userID = X且组ID = 4,则删除此行。如果还有一行userID = X且groupID = 5。
我不想删除groupID = 4的所有行,只删除那些同时包含groupID = 5的行的用户。
所有帮助非常感谢。
答案 0 :(得分: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)