在Sql中首先评估'where'或'having'
答案 0 :(得分:4)
有例外,但这通常是顺序:
答案 1 :(得分:2)
首先评估where
,因为它是在group by
之前评估的。
Having
仅在聚合发生后进行评估。
一般来说,这样的问题没有多大意义,因为SQL不是一种过程语言 - 一个SQL查询描述了一个结果集,但没有描述生成它的步骤。在这种情况下,答案非常清楚(类似地,“加入”发生在“分组”之前)。
SQL优化器可以找到在聚合之前评估某些having
条件的方法。但是,我不熟悉这种优化。
答案 2 :(得分:0)
答案与HartCo的答案非常相似,但它还考虑了另外的DISTINCT和LIMIT(或等效的)