Mysql:如何在连接中命名子选择以避免加入相同的子选择?

时间:2011-01-09 03:06:25

标签: mysql sql

我有一个类似的查询:

select * from (select ... ) t1 join (select ... ) t2 on t1._ = t2._

其中join子选择相同。是否有一种简单的方法来命名这个选择,以便我可以两次使用它?我试过这个:

select * from (select ... ) t1 join t1 t2 on t1._ = t2._

但它出错了。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

  CREATE VIEW MyCommonSelect (Col1, Col2. . .) AS
      SELECT Col1, Col2. . . 

根据查询的确切内容,您可以在内部命名子查询,但这样的事情往往表明子查询代表数据库逻辑(在我看来 - 其他人不同意)应该得到自己的名字。 / p>

答案 1 :(得分:1)

如果获取子选择中的行的成本很高,您可以考虑将中间结果存储在临时表中,然后在您的选择中引用两次。 但是你最好衡量一下,因为存储中间结果也需要花费......

您可以分享您的查询吗?也许你毕竟不需要两次引用它?