我想为一个查询的结果添加别名,并在另一个查询中使用所述别名。举个简单的例子,例如:
(select a from foo) as fooResults;
select b from bar
where b in fooResults;
这种语法显然不起作用。有没有办法用vanilla Oracle SQL实现这一目标?如果它需要PL / SQL,那么语法是什么?搜索结果似乎都指向列或表别名。
编辑:一个驱动因素是我希望以后能够在几个查询中使用fooResults。如果可能的话。
答案 0 :(得分:4)
有几个选择。最干净的,假设你想保留别名,可能是使用WITH
子句
WITH fooResults
AS( SELECT a
FROM foo )
SELECT b
FROM bar
WHERE b IN (SELECT a
FROM fooResults)
如果要在多个查询中使用该表达式,您实际上希望将fooResults
定义为视图。
fooResults
是WITH
子句中定义的视图,内联视图还是子查询,但是SELECT
中必须IN
WHERE b IN fooResults
}子句。无论fooResults
如何定义,您都无法{{1}}。