UPDATE table1, tmpList
SET table1.ts = tmpList.ts_value
WHERE table1.id = tmpList.id
UPDATE table2, tmpList
SET table2.ts = tmpList.ts_value
WHERE table2.id = tmpList.id
我正在使用MySQL
答案 0 :(得分:2)
假设每个id都出现在两个表中(理想情况下只出现一次):
update tmpList inner join table1 using (id) inner join table2 using (id)
set table1.ts = tmpList.ts_value, table2.ts=tmpList.ts_value;
更新:简单地使用左连接而不是内连接使得即使对于仅在一个表中的id也可以工作 - 似乎只是跳过了不适用的set子句;我显然应该早点尝试过。
答案 1 :(得分:1)
答案 2 :(得分:1)
为什么需要一个声明?你担心一个完成而另一个失败,留下一半更新的混乱?
Id就是这种情况,交易就是您所需要的。例如
begin work;
UPDATE table1, tmpList
SET table1.ts = tmpList.ts_value
WHERE table1.id = tmpList.id;
UPDATE table2, tmpList
SET table2.ts = tmpList.ts_value
WHERE table2.id = tmpList.id;
commit work;
您应该能够在一个命令中运行上述所有操作,但如果没有,则可以单独运行它们。除非提交完成,否则不会永久保存数据,只有在begin ... commit之间的所有前一行都成功时才会发生。
答案 3 :(得分:-2)
不,如果您使用简单查询,这是不可能的。我不熟悉我的sql,但在oracle中,一次不能更新两个表。