mysql - MYSQL - 使用复合主键从另一个表更新表
问题描述
我有一个不寻常的情况,我必须用另一个表的值更新一个表,这两个表是相同的。
Table 1 and Table 2
+-------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| timeStamp | datetime | NO | PRI | NULL | |
| obj_id | int(10) | NO | PRI | NULL | |
| value | double | YES | | NULL | |
+-------------+----------+------+-----+---------+-------+
我需要使用存储在 table2 中的值更新 table1。
我已经尝试过在 SO 上找到的一些有用的信息...
经过几次尝试,我想出了这样一个查询:
UPDATE table1 AS f
SET table1.value = t.value
FROM table2 AS t
WHERE (f.timeStamp, f.obj_id) = (t.timeStamp,t.obj_id);
ofc到目前为止还没有运气:(
该错误是最常见的错误: ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'FROM table2 AS t WHERE (f.timeStamp, f.obj_id) = (t.timeStamp,t.obj_id)' 附近使用正确的语法
解决方案
查看 UPDATE 语句的语法,尤其是多表语法。
UPDATE table1 f
JOIN table2 t
ON f.timeStamp = t.timestamp AND f.obj_id = t.obj_id
SET f.value = t.value;
推荐阅读
- mysql - 如果每个值至少满足一个条件,则将某个值分配给所有其他值
- javascript - TradingView React 组件中的图表更新不起作用
- azure-data-factory - ADF 翻转窗口触发器:依赖项触发器未按预期工作
- javascript - 将等待直到函数完成不返回承诺
- kubernetes - kustomize、secretGenerator 和 patchStrategicMerge:envFrom.secretRef 未读取散列密钥名称
- python - 从 Git 提交中获取数据并将其放入 YAML (Gitlab)
- javascript - HTML5 网站在手机屏幕关闭时运行地理定位和音频输出?
- angular - 一个元素上不能有多个模板绑定。仅使用一个以 * (" 为前缀的属性
- regex - 使用 IndexOf 和 Substring 在 IndexOf 之后捕获字符串
- javascript - 在nodejs中动态创建json对象