无法在SQL Server 2008 R2中自行更新

时间:2016-09-12 09:34:56

标签: sql-server sql-update

请参阅以下示例:

create table tbl1(cl1 int,  cl2 varchar(10))
create table tbl2(cl1 int,  cl2 varchar(10))

insert tbl1
select 1, 'a' union all
select 1, 'b' union all
select 1, 'c' union all
select 1, 'd' union all
select 1, 'e' 

insert tbl2
select 1, '' union all
select 1, '' union all
select 1, 'c' union all
select 1, '' union all
select 1, 'a' 

select * from tbl1
select * from tbl2

update b
set b.cl2 = a.cl2
from tbl1 a inner join tbl2 b on a.cl1=b.cl1
where b.cl2 = '' and a.cl2 not in (select cl2 from tbl2 where tbl2.cl1 = a.cl1) 

我想要的是更新tbl2表中cl2列的所有空值而不重复值。

我试图像上面的脚本一样运行,但它无法正常工作。

请帮我找出解决方案。

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个脚本。

create table #tbl1(cl1 int,  cl2 varchar(10))
create table #tbl2(cl1 int,  cl2 varchar(10))

insert #tbl1
select 1, 'a' union all
select 1, 'b' union all
select 1, 'c' union all
select 1, 'd' union all
select 1, 'e' 

insert #tbl2
select 1, '' union all
select 1, '' union all
select 1, 'c' union all
select 1, '' union all
select 1, 'a' 

    update b
    set b.cl2 = a.cl2
    from #tbl1 a inner join #tbl2 b on a.cl1=b.cl1
    where b.cl2 = '' and a.cl2 not in (select t.cl2 from #tbl2 t where a.cl1 = a.cl1) 

Select * from  #tbl1
Select * from  #tbl2