浅聊where和having语句

  • 了解以下三个词在sql中的含义:

    • WHERE:对数据库中的每一行记录进行筛选

    • Having:对结果集(查出来的临时表)中的每一行记录进行筛选。

    • GROUP BY 字段名:对字段名相同的字段进行组合,形成不重名的组。

    • 聚合函数:能够操作列向的单列字段。(理解为多组一列:如SUM()函数)

    • 执行顺序 :where > group by > having

    • 当使用组合之后,每个组合都自动使用了聚合函数。看总结第四点**

    例如:

    select * from A group by name;

    namemoney
    a10
    b20
    a20

    组合后:

    namemoney
    a30
    b20

总结:

区别:
序号wherehaving
1.由于只能对原表进行单行筛选,所以不能使用聚合函数;由于临时表以组合的形式显示(多列一组),所以可以使用聚合函数。
2.对原表进行筛选。对临时表进行筛选得到最终的查询结果。
3.执行单位是单行。执行单位是组(多行)。(所以你要搞清楚ORDER BY的作用,因为有了ORDER BY 的作用,才有了组的概念。)
4.且having只能对select语句后面的属性设置筛选条件。(除了聚合函数之外)

第四点举例:

 表名 属性名 
  A:a,b,c,d
例如:
select a,b,c from where a>0 group by b having a>b    对
select a,b,c from where a>0 group by b having d>a    错

相同点:当没有使用聚合函数的时候,where和having的查询结果没有区别,都是对每一行记录进行筛选 。 (但是having的执行单位还是组,只是每组只有一行记录)

  • 申明:由于是本人个人见解,希望有错误之处希望各位能够帮忙纠正。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值