Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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_Duplicates - Fatal编程技术网

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

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

我有一个结构与以下类似的表:

我正在寻找一种方法来删除角色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.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
      的检查。