开发者社区> 问答> 正文

SQL DELETE与JOIN另一个表在WHERE条件?mysql

我必须从中删除guide_category与guide表无关的行(无效关系)。

这是我想做的,但是它当然不起作用。

DELETE FROM guide_category AS pgc WHERE pgc.id_guide_category IN (SELECT id_guide_category FROM guide_category AS gc LEFT JOIN guide AS g ON g.id_guide = gc.id_guide WHERE g.title IS NULL) 错误:

您不能在FROM子句中指定目标表'guide_category'进行更新

展开
收起
保持可爱mmm 2020-05-17 19:41:13 1339 0
1 条回答
写回答
取消 提交回答
  • 由于锁定实现问题,MySQL不允许使用DELETE或引用受影响的表UPDATE。

    您需要在JOIN此处制作一个:

    DELETE gc.* FROM guide_category AS gc LEFT JOIN guide AS g ON g.id_guide = gc.id_guide WHERE g.title IS NULL 或只是使用NOT IN:

    DELETE
    FROM guide_category AS gc WHERE id_guide NOT IN ( SELECT id_guide FROM guide )来源:stack overflow

    2020-05-17 19:51:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像