PuPhoebe 2021-02-02 21:39 采纳率: 33.3%
浏览 57
已采纳

求教sql中的having语句问题

w3school上讲having用法举的例子我没明白说明了什么,我试验了一下,因为是否添加这个语句最终输出的结果都是一样的。

 

  • 写回答

4条回答 默认 最新

  • damoneric_guo 2021-02-04 15:18
    关注

    having的用法

    having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。我的理解就是真实表中没有此数据,这些数据是通过一些函数生存。

    SQL实例:

    一、显示每个地区的总人口数和总面积.
    SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region

    先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中
    的不同字段(一或多条记录)作运算。

    二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。

    SELECT region, SUM(population), SUM(area)
    FROM bbc
    GROUP BY region
    HAVING SUM(area)>1000000

    在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。
    相反,having子句可以让我们筛选成组后的各组数据

    和你的例子是一样的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • allway2 2021-02-03 09:38
    关注

    这个例子不好,把where子句去掉,把having子句条件换成1500和2000可以看到区别

    评论
  • Zzzz_zzzz_zz 2021-02-03 15:51
    关注

    你这个where 条件给having的筛选影响了吧。having 可以认为是合并后的筛选

    评论
  • 懒人Ethan 2021-02-03 18:11
    关注

    having是对聚合函数处理结果形成的新列的筛选。where是对固定列内容的筛选。

    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 怎么下载MySQL,怎么卸干净原来的MySQL
  • ¥15 网络打印机Ip地址自动获取出现问题
  • ¥15 求局部放电案例库,用于预测局部放电类型
  • ¥100 QT Open62541
  • ¥15 stata合并季度数据和日度数据
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应
  • ¥15 Vue3 中使用 `vue-router` 只能跳转到主页面?
  • ¥15 用QT,进行QGIS二次开发,如何在添加栅格图层时,将黑白的矢量图渲染成彩色
  • ¥50 监控摄像头 乐橙和家亲版 保存sd卡的文件怎么打开?视频怎么播放?
  • ¥15 Python的Py-QT扩展库开发GUI