开发者社区> 问答> 正文

使用LEFT JOIN更新MySQL中的多个表

我有两个表,并且想为LEFT JOIN中的所有行更新T1中的字段。

举一个简单的例子,更新以下结果集的所有行:

SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.id = T2.id WHERE T2.id IS NULL
在MySQL手册指出:

多表UPDATE语句可以使用SELECT语句中允许的任何类型的联接,例如LEFT JOIN。

但是我在记录的多表UPDATE中找不到执行此操作的正确语法。

正确的语法是什么?

展开
收起
保持可爱mmm 2020-05-11 14:57:43 612 0
1 条回答
写回答
取消 提交回答
  • UPDATE t1 LEFT JOIN t2 ON t2.id = t1.id SET t1.col1 = newvalue WHERE t2.id IS NULL 请注意,SELECT使用NOT IN/ NOT EXISTS语法会更有效:

    SELECT t1.* FROM t1 WHERE t1.id NOT IN ( SELECT id FROM t2 ) 有关性能的详细信息,请参见我的博客中的文章:

    查找不完整的订单:LEFT JOIN与NOT IN 不幸的是,MySQL不允许在UPDATE语句的子查询中使用目标表,这就是为什么您需要坚持使用效率较低的LEFT JOIN语法的原因。来源:stack overflow

    2020-05-11 14:57:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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

相关镜像