gpt4 book ai didi

mysql - 如何使用 mysql join 更新记录?

转载 作者:行者123 更新时间:2023-11-29 02:04:07 26 4
gpt4 key购买 nike

在我的 mysql 中,我有 t1、t2 表,我想根据 t1 的字段值匹配 t2 的字段值,从 t2 的字段值更新 t1 的字段

我尝试了以下但它没有更新。我在这里做错了什么

UPDATE t1 
INNER JOIN t2
ON t1.name = t2.name
SET t1.age = t2.age
WHERE t1.name IS NOT NULL;

最佳答案

您需要将要更新的表与您查询的表分开,即使它们是相同的:

UPDATE t1  
SET t1.age = t2.age
FROM t1 as tempT1
INNER JOIN t2
ON tempT1.name = t2.name
WHERE tempT1.name IS NOT NULL;

更新
显然 MySQL 正在使用与其他数据库不同的 UPDATE JOIN 语法。您的初始查询似乎使用了正确的语法,只是为了确保尝试别名表名:

UPDATE t1 temp1
INNER JOIN t2 temp2
ON temp1.name = temp2.name
SET temp1.age = temp2.age
WHERE temp1.name IS NOT NULL;

更新 2
仔细查看之后,我确定 WHERE 子句是问题所在:
WHERE temp1.name 不是 NULL
无论如何,您都无法连接空值,因此默认情况下会过滤掉它们。 WHERE 子句以某种方式干扰了连接。
尝试将其删除以查看 UPDATE 是否有效。如果您不想立即执行和更新,只需使用相同的 JOIN CLAUSE 执行选择以查看哪些记录会受到影响。

这里是对 NULLJOIN 的一般引用:
http://databases.about.com/library/weekly/aa051203a.htm

这是符合上述要求的 SQL Server 引用:http://msdn.microsoft.com/en-us/library/ms190409.aspx

找不到明确说明这一点的 MySQL 引用资料,但我认为这对所有关系数据库都是正确的。

关于mysql - 如何使用 mysql join 更新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9532456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com