SQL临时表与EXCEPT

3

我试图将这个查询得到的记录插入到一个临时表中。任何帮助或建议将会有所帮助。

insert into #AddRec
select *
from stg di
right join
ED bp
on
bp.ID = di.ID
except
select *
from stg di
inner join
ED bp
on
bp.ID = di.ID 

#AddRec是一个带有#的表名吗? - zod
你能否提供更多信息 - 使用的是哪个数据库服务器,SQL Server 2012吗?#AddRec表的架构是什么,另外两个表的架构呢? - Ian Kenney
http://stackoverflow.com/questions/10656088/how-to-insert-into-select-but-one-field-is-from-somewhere-else - zod
4个回答

4

这个 可以帮助简化你的查询。

create table #AddRec(id int) ;

insert into #addrec
select  ed.id
from stg right join 
ed on stg.id=ed.id 
where stg.id is null;

select * from #Addrec

如果您需要从表中获取更多字段,请将定义添加到临时表中,并将它们添加到选择行中。

谢谢Ian,我学到了新东西,我不必使用except。 :) - knahs

1
;WITH Q AS
(
select *
from stg di
right join
ED bp
on
bp.ID = di.ID
except
select *
from stg di
inner join
ED bp
on
bp.ID = di.ID 
)
INSERT INTO #AddRec(... list of fields ...)
SELECT (... list of fields ...) FROM Q

如果您想从头开始创建临时表,请将插入语句替换为以下内容:
SELECT (... list of fields ...) 
INTO #AddRec
FROM Q

0
如果您选择的返回值与插入表的字段数匹配,那么这应该可以工作!
  insert into tbl1 (field1,field2)
    select field1,field2 from.................

0

最简单的方法

select *
into #AddRec
from stg di
right join ED bp on bp.ID = di.ID
except
select * from stg di
inner join ED bp on bp.ID = di.ID

3
如果你能详细说明你的代码究竟在做什么,那会更好。 - Vivek Singh
另外,请注意这个问题已经存在将近8年了。你的回答如何改进其他三个回答呢? - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接