在另一个子查询中使用FROM中的子查询表

时间:2013-05-07 15:58:44

标签: sql database oracle

基本上我想做这样的事情。

SELECT * 
FROM TABLE, (SELECT * FROM TABLE2) SUBQ
WHERE TABLE.SOMETHING IN (SELECT DISTINCT COL FROM SUBQ)

我想知道是否甚至可以在我的FROM中调用另一个子查询中的子查询表,如果是,则该怎么做。

这是一个简化的示例(我的查询太长),所以我不会考虑另一种不使用FROM中的子查询的重写方式。

1 个答案:

答案 0 :(得分:1)

您要查找的内容名为common table expression,它使用WITH SQL关键字。

当然,如果可以重构使用临时表或(索引)视图,那么它会更好/更高效,并且它将服务于多个执行流(如果它们都需要访问相同的数据)。

如果不同的执行流不需要访问相同的数据,那么创建许多临时表或视图(同时也试图避免名称冲突)是不太理想的,CTE更有用。