Oracle别名查询结果

时间:2013-10-07 20:34:34

标签: sql oracle alias

我想为一个查询的结果添加别名,并在另一个查询中使用所述别名。举个简单的例子,例如:

(select a from foo) as fooResults;

select b from bar
  where b in fooResults;

这种语法显然不起作用。有没有办法用vanilla Oracle SQL实现这一目标?如果它需要PL / SQL,那么语法是什么?搜索结果似乎都指向列或表别名。

编辑:一个驱动因素是我希望以后能够在几个查询中使用fooResults。如果可能的话。

1 个答案:

答案 0 :(得分:4)

有几个选择。最干净的,假设你想保留别名,可能是使用WITH子句

WITH fooResults
  AS( SELECT a
        FROM foo )
SELECT b
  FROM bar
 WHERE b IN (SELECT a
               FROM fooResults)

如果要在多个查询中使用该表达式,您实际上希望将fooResults定义为视图。

fooResultsWITH子句中定义的视图,内联视图还是子查询,但是SELECT中必须IN WHERE b IN fooResults }子句。无论fooResults如何定义,您都无法{{1}}。