如何在Oracle中的子查询中定义临时表值

时间:2016-09-30 01:01:02

标签: sql oracle subquery

我正在从非DBA角度处理此问题,因为我没有权限为数据库创建新表。我试图通过在Oracle中使用类似sudo代码的子查询来解决这个问题:

With temptable as ('col1name', 'col2name', 1,'a',2,'b')
Select * from temptable where col1name = 1

看起来像

Col1name | Col2name
1           a
2           b

输出是第1行。我知道这不是最简单的方法,但是我可以想到完成任务,直到我可以让管理员批准新表。我搜索了很多,但我找不到答案。有没有一种简单的方法可以像这样定义临时表数据?

2 个答案:

答案 0 :(得分:2)

我会这样做:

with temptable as (
      select 1 as col1name, 'a' col2name from dual union all
      select 2, 'b' from dual
     )
Select *
from temptable
where col1name = 1;

答案 1 :(得分:1)

作为Gordon建议的CTE(常用表格表达)的替代方法,您还可以将查询用作旧式内联视图。

例如:

 SELECT tt.col1name
      , tt.col2name
   FROM ( SELECT 1 AS col1name, 'a' AS col2name FROM DUAL
          UNION ALL SELECT 2, 'b' FROM DUAL
          UNION ALL SELECT 3, 'c' FROM DUAL
        ) tt
  WHERE tt.col1name = 1
  ORDER
     BY tt.col1name