sql的执⾏顺序(where、groupby、having等)
SELECT语句定义
⼀个完成的SELECT语句包含可选的⼏个⼦句。SELECT语句的定义如下:
SQL代码
1. <SELECT clause> [<FROM clause>] [<WHERE clause>] [<GROUP BY clause>] [<HAVING clause>] [<ORDER BY clause>] [<LIMIT clause>]
SELECT⼦句是必选的,其它⼦句如WHERE⼦句、GROUP BY⼦句等是可选的。
墨茶被央视点名批评⼀个SELECT语句中,⼦句的顺序是固定的。例如GROUP BY⼦句不会位于WHERE⼦句的前⾯。
SELECT语句执⾏顺序
SELECT语句中⼦句的执⾏顺序与SELECT语句中⼦句的输⼊顺序是不⼀样的,所以并不是从SELECT⼦句开始执⾏的,⽽是按照下⾯的顺序执⾏:
开始->FROM⼦句->WHERE⼦句->GROUP BY⼦句->HAVING⼦句->ORDER BY⼦句->SELECT⼦句->curl post 请求
LIMIT⼦句->最终结果
autojs安卓下载每个⼦句执⾏后都会产⽣⼀个中间结果,供接下来的⼦句使⽤,如果不存在某个⼦句,就跳过
git新手教程对⽐了⼀下,mysql和sql执⾏顺序基本是⼀样的, 标准顺序的 SQL 语句为:
1. select 考⽣姓名, max(总成绩) as max总成绩
2.
3. from tb_Grade
4.
5. where 考⽣姓名 is not null
6.
7. group by 考⽣姓名
8.
9. having max(总成绩) > 600
10.mysql语句顺序
11. order by max总成绩openstack安装部署文档
在上⾯的⽰例中 SQL 语句的执⾏顺序如下:
(1). ⾸先执⾏ FROM ⼦句, 从 tb_Grade 表组装数据源的数据
(2). 执⾏ WHERE ⼦句, 筛选 tb_Grade 表中所有数据不为 NULL 的数据
(3). 执⾏ GROUP BY ⼦句, 把 tb_Grade 表按 "学⽣姓名" 列进⾏分组(注:这⼀步开始才可以使⽤select中的别名,他返回的是⼀个游标,⽽不是⼀个表,所以在where中不可以使⽤select中的别名,⽽having却可以使⽤,感谢⽹友 zyt1369 提出这个问题)
(4). 计算 max() 聚集函数, 按 "总成绩" 求出总成绩中最⼤的⼀些数值
(5). 执⾏ HAVING ⼦句, 筛选课程的总成绩⼤于 600 分的.
(7). 执⾏ ORDER BY ⼦句, 把最后的结果按 "Max 成绩" 进⾏排序.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论