1

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

(select a from foo) as fooResults;

select b from bar
  where b in fooResults;

显然,这种语法不起作用。有没有办法用香草 Oracle SQL 来完成这个?如果它需要 PL/SQL,语法是什么?搜索结果似乎都指向列或表别名。

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

4

1 回答 1

4

有几个选项。假设您要保留别名,最干净的方法可能是使用该WITH子句

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

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

但是,无论fooResults是在子句中定义的视图、内联视图还是子查询WITH,您都必须SELECTIN子句中使用它。WHERE b IN fooResults不管怎么fooResults定义 你都做不到。

于 2013-10-07T20:45:31.493 回答