我有两个表,并且想为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中找不到执行此操作的正确语法。
正确的语法是什么?
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
语法的原因。
问题内容: 我知道您可以一次插入多行,是否可以在MySQL中一次更新多行(如在一个查询中)? 编辑:例如,我有以下内容 我想将以下所有更新合并到一个查询中 问题答案: 是的,这是可能的-您可以在插入的键更新中使用INSERT…。 使用您的示例:
问题内容: 如何在MySQL中更新多个值? 这不起作用: 问题答案: 您需要在两个不同的值之间添加一个逗号。例如:
问题内容: 我正在尝试使用此查询使用限制更新一组5行,但mysql显示错误..下面的一个正在工作 为什么第一个不起作用? 问题答案: 如果您确实必须这样做,可以使用以下方法:
非常类似于使用PDO数组更新多个MySQL表列。 但是我使用了一个复杂的形式 更新只是给我一个没有错误的空白页??? 注意:使用了MySQLi,工作正常,只是更新到了PDO。 $data2返回了正确的数组。 这可能是订单吗?IE输出必须匹配列顺序? 分析了使用带有PDO的数组和https://guwii.com/bytes/update-multiple-database-columns-usin
本文向大家介绍使用MySQL WHERE子句中的多个值进行更新,包括了使用MySQL WHERE子句中的多个值进行更新的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是使用WHERE子句中的多个值更新的查询- 让我们再次检查表记录- 这将产生以下输出-
问题内容: 这一点效果很好: 它将列中的所有字段组加在一起。 我遇到的麻烦是得到此结果来更新另一个表中的另一列。 这就是我所拥有的: 任何建议,不胜感激。 问题答案: 您不能在内部使用update语句。您需要使用子选择进行分组。 像这样的东西: