83 sql sql-server sql-server-2005
当我们使用GROUP BY和HAVING与WHERE子句时,我只是混淆了SQL查询的执行顺序.先执行哪一个?什么是序列?
KM.*_*KM. 169
为了:
FROM&JOIN ■确定与过滤器的行
WHERE行上多个滤波器
GROUP BY结合的那些行成组
HAVING滤波器组
ORDER BY排列其余的行/组
LIMIT上剩余的行/组过滤器
这是sql server的完整序列:
1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. WITH CUBE or WITH ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY
11. TOP
Run Code Online (Sandbox Code Playgroud)
因此,从上面的列表中,您可以很容易地理解其执行顺序GROUP BY, HAVING and WHERE是:
1. WHERE
2. GROUP BY
3. HAVING
Run Code Online (Sandbox Code Playgroud)
首先,然后您对查询结果进行GROUP,最后但并非最不重要的是采用HAVING子句来过滤分组结果.这是"逻辑"顺序,我不知道这是如何在引擎中技术实现的.
| 归档时间: |
|
| 查看次数: |
119253 次 |
| 最近记录: |