• SQL之WHERE,GROUP,HAVING,ORDER BY


    ①WHERE 是对数据集进行筛选

    ②GROUP BY 是分组查询,是对结果集进行分组, 一般 GROUP BY 是和聚合函数配合使用:

    GROUP BY 有一个原则,就是 SELECT后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要),如下:

    SELECT column_A,column_B,SUM(column_C) FROM Orders
    GROUP BY column_A,column_B; 

    ③HAVING 用于对分组后的结果进行筛选.(即HAVING的前提是分组)

    ④ORDER BY 是对结果集进行排序

    详解:

    1.WHERE 必须在GROUP BY 之前

    2.GROUP BY 必须在HAVING 之前.

    3.HAVING只能用在GROUP BY 之后,对分组后的结果进行筛选.(即使用HAVING 的前提是分组)

    举例:

    当一个查询语句同时出现了WHERE ,GROUP BY, HAVING ,ORDER BY 时,执行顺序和编写顺序是select--from--where--group--having--select--order by:

    1.执行WHERE子句对全表数据做筛选,返回第一个结果集

    2.针对第一个结果集使用GROUP BY分组,返回第二个结果集

    3.针对第二个结果集使用HAVING进行筛选,返回第三个结果集

    4.针对第三个结果集中的每1组数据执行SELECT XX,有几组就执行几次,返回第四个结果集

    5.对第四个结果集使用OEDER BY进行排序

    WHERE 与 HAVING 的区别:

    WHERE子句中不能使用分组函数(!!!)

    可以在HAVING子句中使用分组函数

    WHERE的执行顺序在HAVING之前,因为WHERE子句在GROUP BY子句之前,HAVING 子句在GROUP BY 之后

    HAVING 子句是对分组结果进行筛选,所以使用HAVING的前提是使用了GROUP BY

  • 相关阅读:
    pbfunc外部函数扩展应用-直接在Datawindow中生成QR二维码,非图片方式
    一、PBNI环境搭建及初步使用
    Powerbuilder编写身份证校验码
    Maven本地安装JAR包组件
    使用SSH通过秘钥登录Linux
    Intellij IDEA下载
    ubuntu使用root用户登录桌面
    Ubuntu安装JDK1.8与配置环境变量
    Ubuntu 安装 JDK 7 / JDK8 的两种方式
    CentOS 7.0关闭默认防火墙启用iptables防火墙
  • 原文地址:https://www.cnblogs.com/yaoze2018/p/11266919.html
Copyright © 2020-2023  润新知