SQL - 创建一个连接的临时表

5

我想将两个表合并到一个临时表中,然后在一个查询语句中使用这个临时表。这是我想要创建的临时表的选择语句:

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

什么是创建临时表的最简单方式?
3个回答

6

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

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之间有什么区别? - Umar.H
1
@Manakin -- CTE 由服务器管理 -- 临时表由用户管理。 - Hogan
哪个是可推荐的? - D4ITON
@D4ITON -- 这很大程度上取决于您的用例。在某些情况下,一个选项会比另一个更好。 - Hogan

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

1
使用一个公共表达式(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;

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