【问题标题】:SQL - Creating a joined temp tableSQL - 创建连接的临时表
【发布时间】:2017-12-31 21:55:37
【问题描述】:

我希望将两个表连接到一个临时表中,然后在选择查询中使用该临时表。这是我要创建的临时表的 select 语句:

select program, event
from OMEGA.HP
inner join POM.GT
on program = substring(name,7,4)
where LENGTH(name)= 25

为上述创建临时表的最简单方法是什么?

【问题讨论】:

    标签: sql inner-join temp-tables


    【解决方案1】:

    您可以创建一个临时表(您可能想要),但如果您还不知道,我想指出您可以在这样的查询中创建一个虚拟临时表

    SELECT * 
    FROM (
      select program, event
      from OMEGA.HP
      inner join POM.GT on program = substring(name,7,4)
      where LENGTH(name)= 25
    ) AS Virtual_table
    

    您甚至可以像这样加入其中的另一个表:

    SELECT * 
    FROM (
      select program, event
      from OMEGA.HP
      inner join POM.GT on program = substring(name,7,4)
      where LENGTH(name)= 25
    ) AS v_table74
    join (
      select program, event
      from OMEGA.HP
      inner join POM.GT on program = substring(name,2,5)
      where LENGTH(name)= 25
    ) as v_table25 on v_table74.program = v_table25.program
    

    【讨论】:

    • 虚拟临时表和 CTE 有什么区别?
    • @Manakin -- CTE 由服务器管理 -- 临时表由用户管理。
    【解决方案2】:
    select program, event
    into #temp    --------------------------------check here
    from OMEGA.HP
    inner join POM.GT
    on program = substring(name,7,4)
    where LENGTH(name)= 25
    

    【讨论】:

      【解决方案3】:

      使用公用表表达式 (CTE):

      with temptablename(program, event) as (
        select program, event
        from OMEGA.HP
        inner join POM.GT
          on program = substring(name,7,4)
        where LENGTH(name)= 25
      )
      select program, event
      from temptablename;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-21
        • 2019-03-13
        • 2017-06-03
        • 1970-01-01
        • 2013-03-19
        • 2013-07-09
        • 1970-01-01
        • 2011-11-03
        相关资源
        最近更新 更多