删除具有相同外键但具有不同值的行

时间:2017-11-15 09:44:50

标签: mysql duplicates

我的表格与以下结构类似:

enter image description here

我正在寻找一种方法来删除role_id = 4的所有行,如果已经有一行具有相同的context_id和user_id,并且role_id = 3。

例如,应删除此行: enter image description here

因为已经有一行具有相同的context_id,user_id和role_id = 3

1 个答案:

答案 0 :(得分:2)

进行DELETE自我加入:

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_id与另一个context_id匹配,user_id也匹配
  • 左侧记录的role_id为4,右侧记录的role_id为3