在Sql首先评估什么'在哪里'或'有'

时间:2016-12-20 16:13:53

标签: sql database

在Sql中首先评估'where'或'having'

3 个答案:

答案 0 :(得分:4)

有例外,但这通常是顺序:

  1. FROM clause
  2. WHERE子句
  3. GROUP BY子句
  4. HAVING条款
  5. SELECT条款
  6. ORDER BY子句

答案 1 :(得分:2)

首先评估where,因为它是在group by之前评估的。

Having仅在聚合发生后进行评估。

一般来说,这样的问题没有多大意义,因为SQL不是一种过程语言 - 一个SQL查询描述了一个结果集,但没有描述生成它的步骤。在这种情况下,答案非常清楚(类似地,“加入”发生在“分组”之前)。

SQL优化器可以找到在聚合之前评估某些having条件的方法。但是,我不熟悉这种优化。

答案 2 :(得分:0)

答案与HartCo的答案非常相似,但它还考虑了另外的DISTINCT和LIMIT(或等效的)

  1. FROM clause
  2. WHERE子句
  3. GROUP BY子句
  4. HAVING条款
  5. SELECT条款
  6. DISTINCT条款
  7. ORDER BY子句
  8. 限制行数子句(例如,MySql中的LIMIT,SQL Server中的TOP)