- 加入我的QQ群
- 关注我的百家号
扫描下面的二维码,“关注”我的百家号。
今天,我们再来看看mysql数据库查询的having条件语句。having条件语句,一般情况也很少单独用到它。having,顾名思义,就是是否有、是否存在的意思。having条件语句看上去,跟where条件语句有点类似。但是它们有着根本的区别:where是判断mysql数据库中的字段,而having条件语句是判断不是数据库字段,而是后生成的某个字段,不是数据库自带的字段。
这里,我们依然使用上一章php操作mysql数据库(5):分组条件语句group by中的商品案例,通过having查询商品价格大于500元的商品,代码如下:
select good_id,shop_price as danjia from goods having danjia>500;
查询结果如下图:
这里,如果用where替换having,就会报错。因为danjia字段在原goods数据表中不存在,而where只能判断goods自带的字段。
having条件语句一般情况下是跟group by语句联合起来使用的。下面以一个案例来说明。
案例:查询 2门及2门以上科目不及格的学生。如下图(数据表名 class):
yuwen 语文;shuxue 数学;yinyu 英语
先通过group by查询出每个学生不及格的科目数,并获取它们的平均分;然后再通过having来查询出2门及2门以上不及格的学生。代码如下:
select name,avg(num),sum(num<60) as numb from class group by name having numb>1;
查询结果如下:
having条件语句虽然很少用到,但用的时候,就会有大的用处。在一些统计类的网站中会经常用到它。