mysql之HAVING子句的用途(代码实例)
程序员文章站
2022-03-31 09:33:20
HAVING 子句可能是 SQL 诸多功能中最容易被轻视的一个。不知道它的真正价值是一个很大的损失。可以说,HAVING 子句是集中体现了 SQL 之面向集合理念的功能。多年以来,...
HAVING 子句可能是 SQL 诸多功能中最容易被轻视的一个。不知道它的真正价值是一个很大的损失。可以说,HAVING 子句是集中体现了 SQL 之面向集合理念的功能。多年以来,笔者一直认为掌握 SQL 的思维方式的最有效的捷径就是学习 HAVING 子句的用法。
这样说的原因是,与 WHERE 子句不同,HAVING 子句正是设置针对集合的条件的地方,因此为了灵活运用它,我们必须学会从集合的角度来理解数据。通过练习 HAVING 子句的用法,我们会在不经意间加深对面向集合这个本质的理解,真是一举两得。
在SELECT语句中使用HAVING子句来指定一组行或聚合的过滤条件。
HAVING子句通常与GROUP BY子句一起使用,以根据指定的条件过滤分组。如果省略GROUP BY子句,则HAVING子句的行为与WHERE子句类似。
请注意,HAVING子句将过滤条件应用于每组分行,而WHERE子句将过滤条件应用于每个单独的行。
未加having 子句之前:
SELECT substr(loan_time,1,10) as m1,sum(borrow_amount) as m2 from t_order_info WHERE model_id=13 and `status`=105 GROUP BY substr(loan_time,1,10)
m1 m2 2017-11-24 200000.000 2017-11-27 6200000.000 2017-11-28 8600000.000 2017-11-29 3600000.000 2017-11-30 4600000.000 2017-12-01 6000000.000 2017-12-04 3800000.000 2017-12-05 3400000.000 2017-12-06 5800000.000 2017-12-07 8000000.000
加入having 子句之后:
SELECT substr(loan_time,1,10) as m1,sum(borrow_amount) as m2 from t_order_info WHERE model_id=13 and `status`=105 GROUP BY substr(loan_time,1,10) HAVING m2>5000000 and m2<6000000
m1 m2 2017-12-06 5800000.000
上一篇: linux查看目录下各个文件大小的命令
下一篇: .net 弹出消息框后,页面样式变乱
推荐阅读