从另一个表更新值

Posted

技术标签:

【中文标题】从另一个表更新值【英文标题】:Updateing value from another table 【发布时间】:2019-10-24 15:51:18 【问题描述】:

我是第一次更新价值。我有两张桌子。一张表有旧值,它是主表,应该更新。在第二张表中,我有新的价值观。在两个表上我都有相同的 User_ID。

数据库名称是“内网”

第一个表的名称是 'wp_bp_xprofile_data'

id     field_id   user_id   value           last_updated
59430   13        4442      598902299       22-Mar-19 20:19:54
59443   13        4443      599847428       22-Mar-19 20:19:54
59456   13        4444      598644555       22-Mar-19 20:19:54

第二张桌子的名字是'idgeorge'

user_id z9
4444    598644555
4443    599847428
4442    598902299

这是三个用户的示例,还有数千个......

我搜索了一些示例并写下了代码,但它不起作用。这是我的代码。

UPDATE wp_bp_xprofile_data
SET wp_bp_xprofile_data.value = idgeorge.z9 
WHERE idgeorge.user_id = wp_bp_xprofile_data.user_id 
and 
wp_bp_xprofile_data.field_id=13 
FROM intranet.idgeorge

报错

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM 'intranet.idgeorge'' at line 11

但我无法弄清楚缺少什么或出了什么问题。

【问题讨论】:

嗨。欢迎来到 SO。请看:Why should I provide an MCRE for what seems to me to be a very simple SQL query? 一个好的提示是从 SELECT 开始。将 SELECT 转换为 UPDATE 通常相当简单。 下面是一个具有有效语法的查询示例。没有足够的信息来确定它是否是您正在寻找的那个...UPDATE wp_bp_xprofile_data x JOIN idgeorge y ON y.user_id = x.user_id SET x.value = y.z9 WHERE x.field_id = 13 【参考方案1】:

您似乎在寻找update/join。在 mysql 中,这看起来像:

UPDATE wp_bp_xprofile_data pd join
       intranet.idgeorge i
       USING (user_id)
    SET pd.value = i.z9 
    WHERE pd.field_id = 13 ;

MySQL 不支持UPDATE 中的FROM 子句。所有遵循正常子句排序的数据库,其中WHERE 需要遵循FROM

【讨论】:

以上是关于从另一个表更新值的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:从另一个表更新一个表中的 id 值

MySQL:从另一个表中更新一个表中的id值

从另一个页面获取ID值[重复]

Spark 从另一个表更新 Delta 中的多个列

从另一个表更新行[重复]

sql 更新让值等于从另一个查询出来的值