我们有表1:
(col1,col2) values(A,2)
(col1,col2) values(A,3)
(col1,col2) values(A,5)
(col1,col2) values(B,6)
(col1,col2) values(B,1)
(col1,col2) values(C,2)
现在,我们有表2:
(col1,col2) values(A,null)
(col1,col2) values(B,null)
(col1,col2) values(C,null)
编写一个查询,仅从1个语句更新col1
的单独总和。不要使用临时表。
(col1,col2) values(A,9)
(col1,col2) values(B,7)
(col1,col2) values(C,2)
答案 0 :(得分:0)
Oracle变体(我希望它也适用于Sybase):
create table TABLE1 (col1 varchar(1), col2 integer);
create table TABLE2 (col1 varchar(1), col2 integer);
insert into TABLE1 (col1,col2) values('A',2);
insert into TABLE1 (col1,col2) values('A',3);
insert into TABLE1 (col1,col2) values('A',5);
insert into TABLE1 (col1,col2) values('B',6);
insert into TABLE1 (col1,col2) values('B',1);
insert into TABLE1 (col1,col2) values('C',2);
insert into TABLE2 (col1,col2) values('A',null);
insert into TABLE2 (col1,col2) values('B',null);
insert into TABLE2 (col1,col2) values('C',null);
update TABLE2 t2 set COL2 = (select sum(t1.col2) from TABLE1 t1 where t1.col1 = t2.col1);
select * from TABLE2;
我记得,Sybase有自己的更新语法(无法检查自己):
update TABLE2
set col2 = sum(t2.col1)
from TABLE1 t1, TABLE2 t2
where t1.col1 = t2.col2