zoukankan      html  css  js  c++  java
  • SQL中where与having的区别

    1.where和having的区别
    2.聚合函数和group by
    3.where 和having的执行顺序
    4.where不能使用聚合函数、having中可以使用聚合函数
    1.where和having的区别
    where:
    where是一个约束声明,使用where来约束来自数据库的数据;
    where是在结果返回之前起作用的;
    where中不能使用聚合函数。
    having:
    having是一个过滤声明;
    在查询返回结果集以后,对查询结果进行的过滤操作;
    在having中可以使用聚合函数。 
    2.聚合函数和group by
    聚合函数就是例如SUM, COUNT, MAX, AVG等对一组(多条)数据操作的函数,需要配合group by 来使用。
    #如:
    SELECT SUM(population),region FROM T01_Beijing GROUP BY region; //计算北京每个分区的人数
    3.where和having的执行顺序
    where 早于 group by 早于 having
    where子句在聚合前先筛选记录,也就是说作用在group by 子句和having子句前,而 having子句在聚合后对组记录进行筛选
    4.where不能使用聚合函数、having中可以使用聚合函数
    #筛选出北京西城、东城、海淀及各区学校数量
    SELECT region,count(school)
    FROM T02_Bejing_school
    WHERE region IN ('海淀' , '西城' , '东城') GROUP BY region;
    #筛选出北京西城、东城、海淀三个区中学校数量超过10所的区及各区学校数量。
    SELECT region,count(school)
    FROM T02_Bejing_school
    WHERE region IN ('海淀' , '西城' , '东城')
    GROUP BY region HAVING count(school) > 10;
    注意!我们不能用where来筛选超过学校数量超过10的区,因为表中不存在这样一条记录。而HAVING子句可以让我们筛选成组后的各组数据.

  • 相关阅读:
    无限维
    黎曼流形
    why we need virtual key word
    TOJ 4119 Split Equally
    TOJ 4003 Next Permutation
    TOJ 4002 Palindrome Generator
    TOJ 2749 Absent Substrings
    TOJ 2641 Gene
    TOJ 2861 Octal Fractions
    TOJ 4394 Rebuild Road
  • 原文地址:https://www.cnblogs.com/muhy/p/10558849.html
Copyright © 2011-2022 走看看