别名,分组依据,具有

时间:2018-10-03 01:20:15

标签: sql group-by difference having

我对SQL非常陌生。有谁愿意解释这两个查询之间是否有区别?

SELECT author, sum(words) AS total_words
FROM books
GROUP BY author 
HAVING sum(words) > 10000000;

SELECT author, sum(words) AS total_words 
FROM books
GROUP BY author 
HAVING total_words > 10000000;

1 个答案:

答案 0 :(得分:0)

查询之间没有实质性差异。他们应该返回完全相同的结果集,并具有相同或基本相同的执行计划。

一个问题是sum(words)是否被评估一次或两次。那可能取决于数据库。但是,对于优化器而言,不难发现该表达式只应计算一次。即使计算两次,sum()group by所需的工作相比还是非常便宜的。