我想更新test1
表格的某些行。 test1中ColumnC
为零。
例如:
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
我该怎么做?
答案 0 :(得分: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;
答案 1 :(得分:1)
如果要更新表test1,则必须在where子句中。