sql的执行顺序 (where、groupby、having等)
2019独角兽企业重金招聘Python工程师标准>>>
SELECT语句定义
一个完成的SELECT语句包含可选的几个子句。SELECT语句的定义如下:
SQL代码
- <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子句->LIMIT子句->最终结果
每个子句执行后都会产生一个中间结果,供接下来的子句使用,如果不存在某个子句,就跳过
对比了一下,mysql和sql执行顺序基本是一样的, 标准顺序的 SQL 语句为:
- select 考生姓名, max(总成绩) as max总成绩
- from tb_Grade
- where 考生姓名 is not null
- group by 考生姓名
- having max(总成绩) > 600
- order by max总成绩
在上面的示例中 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 成绩" 进行排序.
转载于:https://my.oschina.net/lsl1991/blog/1542957
sql的执行顺序 (where、groupby、having等)相关推荐
- mysql oracle 查询语句执行顺序_MySQL sql语句执行顺序
(8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING ...
- 25、Sql语句执行顺序
sql语句定义和执行顺序 摘自<MySQL技术内幕:SQL编程> sql语句定义的顺序 (1) SELECT (2)DISTINCT<select_list> (3) FROM ...
- 带left join 的sql的执行顺序
1.笛卡尔积(Cartesian product) 顾名思义, 这个概念得名于笛卡儿. 在数学中,两个集合 X 和 Y 的笛卡儿积(Cartesian product),又称直积,表示为 X × Y, ...
- 【转】SQL 语句执行顺序
From:http://www.jellythink.com/archives/924 Oracle-SQL语句执行原理和完整过程详解:https://wenku.baidu.com/view/398 ...
- SQL 语句执行顺序
From:http://www.jellythink.com/archives/924 Oracle-SQL语句执行原理和完整过程详解:https://wenku.baidu.com/view/398 ...
- php语句执行顺序,sql语句执行顺序是什么
sql语句执行顺序:1.最先执行from tab:2.where语句是对条件加以限定:3.分组语句[group by-- having]:4.聚合函数:5.select语句:6.order by排序语 ...
- mysql 执行顺序 SQL语句执行顺序分析
最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...
- sql语句执行顺序及简单优化
SQL的执行顺序 (1)from (表关联,是从后往前.从右到左解析的 ) 所以尽量把数据量大的表放在最左边来进行关联 (2) on 需要从哪个数据表检索数据 (3) join 多表 ...
- 当WHERE子句、GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序
当WHERE子句.GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序如下: (1) 执行WHERE子句,从表中选取行. (2) 由GROUP BY 子句对选取的行进行分组. ...
- 整理:sql server 中sql语句执行顺序
原文地址为: 整理:sql server 中sql语句执行顺序 SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中 ...
最新文章
- 受用一生的高效 PyCharm 使用技巧(二)pycharm 指定参数运行文件
- mysql b 树删除操作,B-树的删除过程介绍
- thinkphp几个表的数据合并,并用数组分页
- 执行SQL-DefaultSqlSession.selectOne()
- 一场赛跑引起的并发知识
- Ubuntu下用eclipse调试caffe code
- 服务器的性能监测及工具(profmon)
- 继微博之后,抖音、今日头条、小红书宣布将显示账号IP属地
- 算法十大排序(含动图)
- Chrome控制台console的各种用法(方便调试)
- 火狐 ajax提交失败,Firefox下AJAX0x80040111错误的解决方法
- 拖库 洗库 撞库的概念
- 转载 基于MATLAB 进行图像分类
- RAC环境的AFD详解
- PHP 编写“九九乘法表”
- 安卓内存数据分析和内存脚本分析教程分享
- 【机器学习炼丹炉】使用便宜的x99和二手显卡,单显卡的学习机器在3000元,多显卡更贵,可以用支架,架起显卡,用做算法的学习使用,模型训练需要显卡的算力支持,低成本做算法研究,万一从入门到放弃了呢
- JN项目-app首页订票功能实现
- Java项目安全问题及解决方案
- Android 色板
热门文章
- 代码大全读后感(二)
- Talk O/RM (DAL) too ...
- 开发ing经验关于游戏中寻路
- python打破循环_python – 为什么“c.execute(…)”打破循环?
- mp4转gif_mp4转gif怎么转?一键转码的技巧要知道
- ubuntu php上传文件,Ubuntu中增加apache上传文件大小限制(突破Aapache默认2M上传限制)...
- SQLite中SELECT基本形式
- 四轴飞行器实践教程(内部资料)
- iOS获取最上层控制器
- atom 主板 文件服务器,小巧而精悍!Atom工控主板平台拆解测试