sql 多表查询更新

需要更新表 A 中 i 的值 i = 表B.k - 表B.unk
且条件为 表A中的key = 表B中的key

表A 表B 在同一个数据库内

这个更新语句怎么写
UPDATE 子句中表名或视图名错误。
无法对查询文本做语法分析。

那要看你用的是什么数据了
sqlserver : update A a set a.i = b.k - b.unk from B b where a.key = b.key
oracle : update A a set a.i = (select b.k-b.unk from B b where a.key = b,key) where exists(select 1 from B b a.key = b.key)

试试看 应该是可以的追问

已经通过线下沟通完成了 谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-16
update T
set T.i = B.k -B.unk
from 表A T
leftjoin 表B B
on T.key = B.key

第2个回答  2011-10-13
update A set i=B.k=B.unk from A inner join B
on A.key=B.key追问

是需要 B.k 减 B.unk 不是等于

第3个回答  2011-10-13
update a inner join b on a.key=b.key set a.i=b.k-b.unk追问

UPDATE 子句中表名或视图名错误。
无法对查询文本做语法分析。

追答

你的数据库是什么?我写的按照access语法

第4个回答  2011-10-13
用存储过程。。。不过估计你嫌麻烦。
相似回答