2019独角兽企业重金招聘Python工程师标准>>>

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子句->LIMIT子句->最终结果 
每个子句执行后都会产生一个中间结果,供接下来的子句使用,如果不存在某个子句,就跳过 
对比了一下,mysql和sql执行顺序基本是一样的, 标准顺序的 SQL 语句为:

  1. select 考生姓名, max(总成绩) as max总成绩
  2. from tb_Grade
  3. where 考生姓名 is not null
  4. group by 考生姓名
  5. having max(总成绩) > 600
  6. 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等)相关推荐

  1. mysql oracle 查询语句执行顺序_MySQL sql语句执行顺序

    (8)     DISTINCT (1)     FROM (3)      JOIN (2)     ON (4)     WHERE (5)     GROUP BY (6)     HAVING ...

  2. 25、Sql语句执行顺序

    sql语句定义和执行顺序 摘自<MySQL技术内幕:SQL编程> sql语句定义的顺序 (1) SELECT (2)DISTINCT<select_list> (3) FROM ...

  3. 带left join 的sql的执行顺序

    1.笛卡尔积(Cartesian product) 顾名思义, 这个概念得名于笛卡儿. 在数学中,两个集合 X 和 Y 的笛卡儿积(Cartesian product),又称直积,表示为 X × Y, ...

  4. 【转】SQL 语句执行顺序

    From:http://www.jellythink.com/archives/924 Oracle-SQL语句执行原理和完整过程详解:https://wenku.baidu.com/view/398 ...

  5. SQL 语句执行顺序

    From:http://www.jellythink.com/archives/924 Oracle-SQL语句执行原理和完整过程详解:https://wenku.baidu.com/view/398 ...

  6. php语句执行顺序,sql语句执行顺序是什么

    sql语句执行顺序:1.最先执行from tab:2.where语句是对条件加以限定:3.分组语句[group by-- having]:4.聚合函数:5.select语句:6.order by排序语 ...

  7. mysql 执行顺序 SQL语句执行顺序分析

    最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...

  8. sql语句执行顺序及简单优化

    SQL的执行顺序 (1)from    (表关联,是从后往前.从右到左解析的 ) 所以尽量把数据量大的表放在最左边来进行关联 (2) on     需要从哪个数据表检索数据 (3) join   多表 ...

  9. 当WHERE子句、GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序

    当WHERE子句.GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序如下: (1) 执行WHERE子句,从表中选取行. (2) 由GROUP BY 子句对选取的行进行分组. ...

  10. 整理:sql server 中sql语句执行顺序

    原文地址为: 整理:sql server 中sql语句执行顺序 SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中 ...

最新文章

  1. 受用一生的高效 PyCharm 使用技巧(二)pycharm 指定参数运行文件
  2. mysql b 树删除操作,B-树的删除过程介绍
  3. thinkphp几个表的数据合并,并用数组分页
  4. 执行SQL-DefaultSqlSession.selectOne()
  5. 一场赛跑引起的并发知识
  6. Ubuntu下用eclipse调试caffe code
  7. 服务器的性能监测及工具(profmon)
  8. 继微博之后,抖音、今日头条、小红书宣布将显示账号IP属地
  9. 算法十大排序(含动图)
  10. Chrome控制台console的各种用法(方便调试)
  11. 火狐 ajax提交失败,Firefox下AJAX0x80040111错误的解决方法
  12. 拖库 洗库 撞库的概念
  13. 转载 基于MATLAB 进行图像分类
  14. RAC环境的AFD详解
  15. PHP 编写“九九乘法表”
  16. 安卓内存数据分析和内存脚本分析教程分享
  17. 【机器学习炼丹炉】使用便宜的x99和二手显卡,单显卡的学习机器在3000元,多显卡更贵,可以用支架,架起显卡,用做算法的学习使用,模型训练需要显卡的算力支持,低成本做算法研究,万一从入门到放弃了呢
  18. JN项目-app首页订票功能实现
  19. Java项目安全问题及解决方案
  20. Android 色板

热门文章

  1. 代码大全读后感(二)
  2. Talk O/RM (DAL) too ...
  3. 开发ing经验关于游戏中寻路
  4. python打破循环_python – 为什么“c.execute(…)”打破循环?
  5. mp4转gif_mp4转gif怎么转?一键转码的技巧要知道
  6. ubuntu php上传文件,Ubuntu中增加apache上传文件大小限制(突破Aapache默认2M上传限制)...
  7. SQLite中SELECT基本形式
  8. 四轴飞行器实践教程(内部资料)
  9. iOS获取最上层控制器
  10. atom 主板 文件服务器,小巧而精悍!Atom工控主板平台拆解测试