• SQL中where与having的区别


    SQL中where与having的区别

     

    where:
      where是一个约束声明,使用where来约束来自数据库的数据。
      where是在结果返回之前起作用的。
      where中不能使用聚合函数。

       执行顺序:where 早于 group by, 早于 having,where子句在聚合前先筛选记录

    having:

      having是一个过滤声明;

      在查询返回结果集以后,对查询结果进行的过滤操作。
      在having中可以使用聚合函数。 
        having子句在聚合后对组记录进行筛选。
    例题:

    10、查询平均成绩大于60分的同学的学号和平均成绩;
      select student_id,avg(num) avg from score group by student_id where avg>60;  #  错误!,因为where子句在聚合前先筛选记录,执行where语句时,还没有执行avg(num) 函数,也就没有avg值。
      select   t.student_id,  t.avg  from     (select student_id,avg(num) avg from score group by student_id)     as  t       where t.avg>60; #使用子查询也可以实现。
      select student_id,avg(num) avg from score group by student_id having avg>60;#使用过滤语句。最好!

  • 相关阅读:
    第二阶段冲刺进程2
    第二阶段冲刺进程1
    Alpha版使用说明
    回复每组的意见的评价
    每个组针对本组提出的意见的整理
    软件项目第一次Sprint总结
    站立会议7
    站立会议6
    团队博客11
    团队博客10
  • 原文地址:https://www.cnblogs.com/qqq789001/p/13933720.html
Copyright © 2020-2023  润新知