编写一个sql语句来更新sybase中以下查询的数据

时间:2011-09-30 02:40:22

标签: sybase

我们有表1:

表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:

表:2

(col1,col2) values(A,null)
(col1,col2) values(B,null)
(col1,col2) values(C,null)

编写一个查询,仅从1个语句更新col1的单独总和。不要使用临时表。

OUTPUT:表2:

(col1,col2) values(A,9)
(col1,col2) values(B,7)
(col1,col2) values(C,2)

1 个答案:

答案 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