我想为一个查询的结果加上别名,并在另一个查询中使用该别名。举个简单的例子,比如:
(select a from foo) as fooResults;
select b from bar
where b in fooResults;
显然,这种语法不起作用。有没有办法用香草 Oracle SQL 来完成这个?如果它需要 PL/SQL,语法是什么?搜索结果似乎都指向列或表别名。
编辑:一个驱动因素是我希望以后能够在多个查询中使用 fooResults,如果可能的话。
有几个选项。假设您要保留别名,最干净的方法可能是使用该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
定义 你都做不到。