zoukankan      html  css  js  c++  java
  • 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;#使用过滤语句。最好!

  • 相关阅读:
    C#学习资源汇总
    ASP.NET MVC从视图传参到控制器的几种形式
    ASP.NET MVC之从控制器传递数据到视图方式
    Scrapy at a glance预览
    登录views
    django加密解密api
    django静态模版使用
    django重定向
    Django 2.1.3 文档
    秀图看图 隐私声明
  • 原文地址:https://www.cnblogs.com/qqq789001/p/13933720.html
Copyright © 2011-2022 走看看