mysql - MySQL中函数的执行顺序
问题描述
我知道 MySQL 的执行顺序是不固定的。但是,我听说它通常是这样的:
FROM
, 包括JOIN
sWHERE
GROUP BY
HAVING
SELECT
DISTINCT
ORDER BY
LIMIT
和OFFSET
但是,如果我运行类似COUNT()
的功能(例如下面的代码),它什么时候可以执行?以及 MySQL 如何决定将使用函数计算的主题(例如,函数要计算什么COUNT()
)?我对 MySQL 中, ,等函数的执行顺序和目标指定感到困惑。AVG()
SUM()
MAX()
SELECT productvendor, count(*)
FROM products
GROUP BY productvendor
HAVING count(*) >= 9;
解决方案
您的顺序不正确
选择在 GROUP BY 之前
FROM, including JOINs
WHERE
SELECT the row obtained by from and where in a temporary area for others
operation (and build the column alias)
DISTINCT
GROUP BY
HAVING
ORDER BY
LIMIT and OFFSET
return the final result
计数和聚合函数是在选择列的临时结果上完成的。这个操作产生通过过滤的结果
推荐阅读
- python - 试图将 WORKING python 程序转换为 C++ 但不起作用?
- c# - 反编译源码中的\uE0001.\uE000是什么意思?
- apache-spark - 在主节点中创建 Spark Session
- matlab - 成对观察的箱线图
- google-app-engine - 如何修复 put() 与 Cloud Datastore ndb 模型(Google App Engine)的冲突
- spring-boot - 我们可以仅通过 Spring Boot 将 Redis 集群与主节点连接吗
- django - 我可以直接在 HTML 文件的顶层使用 Django 模板语言,即不带或标签吗?例子 -
- wireshark - 如何使用 tshark 从 .pcapng 文件中读取接口名称?
- python - 如何从 Django 中的中间件重定向 url?
- python - 将大熊猫数据框输入 TensorFlow