0

我想更新test1表中的一些行。ColumnC在 test1 中为零。

例如:

ColumnA 是父节点。ColumnA+ColumnB 是主键。

create table test(ColumnA int,  ColumnB int,  ColumnC int);
Insert Into test Values(1, 10,0);
Insert Into test Values(2, 11,0);
Insert Into test Values(3, 14,0);

create table test1(ColumnA int,  ColumnB int,  ColumnC int);
Insert Into test1 Values(1, 9,123);
Insert Into test1 Values(1, 10,0);
Insert Into test1 Values(2, 10,128);
Insert Into test1 Values(2, 11,0);
Insert Into test1 Values(3, 13,145);
Insert Into test1 Values(3, 14,0);

我想要的结果:

在此处输入图像描述

我不工作的代码:

update test1 a 
set a.ColumnC = b.ColumnC
from test1 as b where convert(nvarchar,b.ColumnA)+
convert (nvarchar,b.ColumnB)in(select
convert(nvarchar,c.ColumnA)+
convert (nvarchar,c.ColumnB)  ColumnC  
from test as c);
select * from test1

我怎样才能做到这一点?

4

2 回答 2

5

试试这个 :

update a set a.ColumnC=b.ColumnC


from test1 a 
inner join test1 b
on b.ColumnA=a.ColumnA and b.ColumnC!=0
and a.ColumnC=0;


select * from test1;

SQL小提琴

于 2013-02-28T11:13:36.403 回答
1

如果你想更新表 test1,它必须在你的 where 子句中。

于 2013-02-28T10:38:49.193 回答