zoukankan      html  css  js  c++  java
  • Where 与 Having

    WHERE在数据分组前进行过滤,HAVING在数据分组后过滤。

    HAVING可以对检索(或计算)出的结果过滤,WHERE则不行。

    WHERE、聚合函数、HAVING在from后面的执行顺序:WHERE>聚合函数(sum,min,max,avg,count)>HAVING

    表orders的数据如下:

    +-----------+---------------------+---------+
    | order_num | order_date | cust_id |
    +-----------+---------------------+---------+
    | 20005 | 2005-09-01 00:00:00 | 10001 |
    | 20006 | 2005-09-12 00:00:00 | 10003 |
    | 20007 | 2005-09-30 00:00:00 | 10004 |
    | 20008 | 2005-10-03 00:00:00 | 10005 |
    | 20009 | 2005-10-08 00:00:00 | 10001 |
    +-----------+---------------------+---------+

    计算每个cust_id的订单数,且返回订单数>=2的cust_id,这里只能使用HAVING

    mysql> SELECT cust_id, COUNT(*) AS nums
             -> FROM orders
             -> group by cust_id
             -> HAVING COUNT(*) >= 2;
    +---------+------+
    | cust_id | nums |
    +---------+------+
    | 10001 | 2 |
    +---------+------+

    where首先排除了不符合要求的行,在此基础上可以分组、计算, 而后having可以进一步筛选前面得到的结果。

  • 相关阅读:
    火车进出站(POJ1363)
    字符串反转,栈模拟(ZOJ1151)
    模拟网页的浏览Stack(POJ1028)
    Codeforces Round #347 (Div.2)_B. Rebus
    Codeforces Round #347 (Div.2)_A. Complicated GCD
    BFS模板
    广搜破解密码(HDU1195)
    DFS+BFS(POJ3083)
    砍树,POJ(2665)
    快速幂取模,POJ(1995)
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9641873.html
Copyright © 2011-2022 走看看