SQL的update语句中,可以让要update的表里的数据与另外的一个表里的数据进行运算吗

比如说,我有个a表里面有个int型的属性a,有个b表,里面也有个int型的属性b,两个表没有任何联系,我想进行操作
update a
set a=a*b,b
这个操作可以做吗,为什么我一运行就提示我找不到b.b呢,要怎么样写才能实现这个操作

两表必须有关联,不然你a.a要与b.b的哪一行进行计算?依据何在?有了关系,比如id,就可以如下:

update a
set a.a *= b.b
from a
join b on a.id=b.id

 如果原表实在没有关联,你只想让行与行关联,那就要人为制造关联,比如分别给a、b用row_number加上行号,形成派生表aa和bb,然后对aa进行update,一样可以更新到a。

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-01-15
可以的。
示例如下:update tablenameA set A=(A*(select B from tablenameB where 条件) ) where 条件;
第2个回答  2016-01-22

可以,比如可以这样:

加上From  ,From后面和其他表可以像Select语句那样写,但只能更新一个表的数据,不允许同时更新多表数据

UPDATE a SET a.a=a.a*b.b FROM a,b

第3个回答  2016-01-25
两个有关系的表示可以的,UPDATE TABLE1 SET TABLE1.AA=TABLE1.BB*TABLE2.CC FROM TABLE1 LEFT OUTER JOIN TABLE2 ON TABLE1.XX=TABLE2.XX,基本是这个样式,from后面是建立两个表的关联关系,你这个没办法写关联关系的表应该不行
相似回答