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