我有一个不寻常的情况,我必须用另一个表的值更新一个表,这两个表是相同的。
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 | |
+-------------+----------+------+-----+---------+-------+
我需要用表2中存储的值更新表1。
我尝试了一些有用的信息,所以。。。
经过几次尝试,我提出了这样一个查询:
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到目前为止运气都不好:(
最常见的错误是:错误1064(42000):您的sql语法有错误;检查与您的mysql服务器版本对应的手册,以获得正确的语法,以便在第1行使用“from table2 as t where(f.timestamp,f.obj\u id)=(t.timestamp,t.obj\u id)”
2条答案
按热度按时间yftpprvb1#
我首先编写一个select语句,它显示要替换的现有值以及新值。这让我可以测试表达式,并直观地验证结果。
(我通常使用
t
作为将成为更新的“目标”的表的别名,并使用s
作为“源”的别名然后我通过替换“
SELECT ... FROM
“与”UPDATE
关键字,并添加SET
“合同前条款”WHERE
“条款fhg3lkii2#
看看update语句的语法,尤其是多表语法。