Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何根据一列中的重复项和另一列中的差异从表中删除行?_Mysql - Fatal编程技术网

Mysql 如何根据一列中的重复项和另一列中的差异从表中删除行?

Mysql 如何根据一列中的重复项和另一列中的差异从表中删除行?,mysql,Mysql,我有一些数据污染在一个表中,我有一个艰难的时间删除。。。我已经确定了污染的原因,这样就不会再发生了,但现在有一大堆记录需要删除,我很难弄清楚是怎么回事 问题的性质如下 我有一个包含userid和groupid的表。一个用户存在于多个组中是有效的,因此我无法用唯一的关联来解决这一问题 在我的例子中,假设第4组和第5组是互斥的(这意味着用户不能同时属于这两个组) 我需要在user_groups表上运行delete,我可以说(英语): 如果userID=X,组ID=4,如果还有一行userID=X,组

我有一些数据污染在一个表中,我有一个艰难的时间删除。。。我已经确定了污染的原因,这样就不会再发生了,但现在有一大堆记录需要删除,我很难弄清楚是怎么回事

问题的性质如下

我有一个包含userid和groupid的表。一个用户存在于多个组中是有效的,因此我无法用唯一的关联来解决这一问题

在我的例子中,假设第4组和第5组是互斥的(这意味着用户不能同时属于这两个组)

我需要在user_groups表上运行delete,我可以说(英语): 如果userID=X,组ID=4,如果还有一行userID=X,组ID=5,则删除此行

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


非常感谢大家的帮助

这将删除组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)