Mysql 删除具有相同外键但具有不同值的行
我有一个结构与以下类似的表: 我正在寻找一种方法来删除角色id=4的所有行,如果已经有一行具有相同的上下文id和用户id,并且角色id=3 例如,应删除此行:Mysql 删除具有相同外键但具有不同值的行,mysql,duplicates,Mysql,Duplicates,我有一个结构与以下类似的表: 我正在寻找一种方法来删除角色id=4的所有行,如果已经有一行具有相同的上下文id和用户id,并且角色id=3 例如,应删除此行: 由于已经有一行具有相同的上下文\u id、用户\u id和角色\u id=3,因此执行删除自联接: DELETE t1 FROM yourTable t1 INNER JOIN yourTable t2 ON t1.context_id = t2.context_id AND t1.user_id = t2.us
由于已经有一行具有相同的上下文\u id、用户\u id和角色\u id=3,因此执行
删除自联接:
DELETE t1
FROM yourTable t1
INNER JOIN yourTable t2
ON t1.context_id = t2.context_id AND
t1.user_id = t2.user_id AND
t2.role_id = 3
WHERE
t1.role_id = 4;
这将在以下条件下匹配表中的行:
context\u id
与另一个context\u id
匹配,用户id
也匹配
- 左侧记录的
role\u id
为4,右侧记录的role\u id
为3
执行
删除自连接:
DELETE t1
FROM yourTable t1
INNER JOIN yourTable t2
ON t1.context_id = t2.context_id AND
t1.user_id = t2.user_id AND
t2.role_id = 3
WHERE
t1.role_id = 4;
这将在以下条件下匹配表中的行:
context\u id
与另一个context\u id
匹配,用户id
也匹配
- 左侧记录的
role\u id
为4,右侧记录的role\u id
为3
这与外键有什么关系?@P.Salmon也许上下文\u id
是外键?我同意这个标题没有触及问题的实质。我在理解这个标题时遇到了一些困难,我想写“外键”因为用户id和上下文id的组合提供了一种外键,在这种情况下,这与外键有什么关系?@P.Salmon也许上下文id
是外键?我同意标题没有触及问题的实质。我在理解标题时遇到了一些困难,我想写“外键”,因为用户id和上下文id的组合提供了一种外键。在这种情况下,我认为这不符合我想要实现的目标,您没有将角色_id带入account@RealGigex我把user\u id
作为role\u id
的输入错误。除此之外,查询应该可以工作。但是识别行的方法(一种外键)取决于上下文id和用户id,而这两个id现在都丢失了。我在查询中添加了一个对user\id
的检查。我认为这不适合我想要完成的任务,您没有将角色_id带入account@RealGigex我把user\u id
作为role\u id
的输入错误。除此之外,查询应该可以工作。但是识别行(一种外键)的方法取决于上下文id和用户id,而现在缺少上下文id和用户id。我在查询中添加了一个对user\id
的检查。