Sql 如何在Oracle子查询中定义临时表值
我是从非DBA的角度来处理这个问题的,因为我没有为数据库创建新表的权限。我试图通过在Oracle中使用类似于以下sudo代码的子查询来解决此问题:Sql 如何在Oracle子查询中定义临时表值,sql,oracle,subquery,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行。我知道这不是最简单的方法,
With temptable as ('col1name', 'col2name', 1,'a',2,'b')
Select * from temptable where col1name = 1
看起来很诱人
Col1name | Col2name
1 a
2 b
输出为第1行。我知道这不是最简单的方法,但在我得到管理员批准一个新表之前,这是我完成任务所能想到的全部。我找了很多,但找不到答案。有没有一种简单的方法来定义这样的临时表数据?我会这样做:
with temptable as (
select 1 as col1name, 'a' col2name from dual union all
select 2, 'b' from dual
)
Select *
from temptable
where col1name = 1;
我会这样做:
with temptable as (
select 1 as col1name, 'a' col2name from dual union all
select 2, 'b' from dual
)
Select *
from temptable
where col1name = 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
作为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