0

test1テーブルのいくつかの行を更新したいと思います。ColumnCtest1 ではゼロです。

例えば:

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 に答える