从其他查询(Oracle)中的一个查询重用FROM子句

时间:2012-12-12 16:35:07

标签: sql oracle10g

问题:

我正在编写一个SELECT查询,其FROM子句包含嵌套查询并从多个查询中获取数据。我需要在其他几个查询中再次使用FROM cluase中的数据。

在Oracle中执行此操作的最佳方式是什么。

1 个答案:

答案 0 :(得分:5)

如果需要在多个不同的SQL语句中重用查询,最简单的选择是为该SQL语句创建一个视图

CREATE VIEW view_name
AS
  <<query to reuse>>

然后在所有查询中使用该视图。

如果需要在同一SQL语句中的多个位置重用查询,请使用子查询因子分析和WITH子句

WITH query_name AS (
  <<query to reuse>>
)
SELECT *
  FROM query_name q1
 WHERE something = (select max(something)
                      from query_name q2
                     where q1.key = q2.key)