我有一个类似的查询:
select * from (select ... ) t1 join (select ... ) t2 on t1._ = t2._
其中join子选择相同。是否有一种简单的方法来命名这个选择,以便我可以两次使用它?我试过这个:
select * from (select ... ) t1 join t1 t2 on t1._ = t2._
但它出错了。有什么想法吗?
答案 0 :(得分:1)
CREATE VIEW MyCommonSelect (Col1, Col2. . .) AS
SELECT Col1, Col2. . .
根据查询的确切内容,您可以在内部命名子查询,但这样的事情往往表明子查询代表数据库逻辑(在我看来 - 其他人不同意)应该得到自己的名字。 / p>
答案 1 :(得分:1)
如果获取子选择中的行的成本很高,您可以考虑将中间结果存储在临时表中,然后在您的选择中引用两次。 但是你最好衡量一下,因为存储中间结果也需要花费......
您可以分享您的查询吗?也许你毕竟不需要两次引用它?