【问题标题】:Sql temp table with except带有除外的 Sql 临时表
【发布时间】:2013-04-21 05:31:32
【问题描述】:

我正在尝试将此查询的记录插入到临时表中。任何帮助或建议都会有所帮助

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 

【问题讨论】:

标签: sql join except temp-tables


【解决方案1】:

最简单的方法

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

【讨论】:

  • 如果你能详细说明你的代码在做什么会更好。
  • 另外,请注意,这个问题已经有将近 8 年的历史了。与其他三个相比,您的答案有何改进?
【解决方案2】:
;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

【讨论】:

    【解决方案3】:

    This 可能有助于简化您的查询。

    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
    

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

    【讨论】:

    • 谢谢伊恩,学到了一些新东西,我不必使用除了。 :)
    【解决方案4】:

    如果您的选择返回匹配插入表的字段计数,这应该可以工作!

      insert into tbl1 (field1,field2)
        select field1,field2 from.................
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多