基本上我想做这样的事情。
SELECT *
FROM TABLE, (SELECT * FROM TABLE2) SUBQ
WHERE TABLE.SOMETHING IN (SELECT DISTINCT COL FROM SUBQ)
我想知道是否甚至可以在我的FROM
中调用另一个子查询中的子查询表,如果是,则该怎么做。
这是一个简化的示例(我的查询太长),所以我不会考虑另一种不使用FROM
中的子查询的重写方式。
答案 0 :(得分:1)
您要查找的内容名为common table expression,它使用WITH
SQL关键字。
当然,如果可以重构使用临时表或(索引)视图,那么它会更好/更高效,并且它将服务于多个执行流(如果它们都需要访问相同的数据)。
如果不同的执行流不需要访问相同的数据,那么创建许多临时表或视图(同时也试图避免名称冲突)是不太理想的,CTE更有用。