今天,小编就给大家介绍一下关于MySQL当中的内存查询功能。我们知道,在select查询当中,where查询只可以查询MySQL保存在硬盘的数据,如果是用as定义的变量,或者说用where查询返回的结果集是在内存中的,这时如果对内存当中这一部分数据进行查询,就能用having进行查询。
(一)用having进行内存查询
今天小编使用的数据表为我们在前面所创建的cellphone表。
having运行方式实例,如下:
注意:where跟having是共存,where是在having前面的,由于一定要把磁盘上的数据查出来放在内存后才能用having查这些数据。
(二)实例:having内存查询
以下为一个学生成绩查询实例,查询出下表当中2门以及2门以上不及格者(即:mark<60)的平均成绩:
以上问题,还存在着一个经常出现的错误答案,如下例:
从上例可以看出,错误的地方在count()统计函数当中出现,score<60会得到一个布尔返回值条件为真结果是1,条件为假结果是0。
这个时候,不管分数是不是小于60,都可以得到一行值,而count就只统计行数,这就是第一次错误的查询会看来正确的原因,由于jack只有一条记录,当有一个全部及格且大于或等于两条记录的人出现时,count统计出这个人的score<60的结果条数是>=2的,所以就满足havinggk>=2,就显示出这个人。
总结:以上,我们就可以知道。where是对表或者视图的筛选,having是对做过groupby后的结果进行筛选,不用groupby不能用having。想要了解更多资讯,可以关注我们课课家教育网站。
下一篇:oracle数据类型详解
¥199.00
¥29.90
¥48.00¥180.00
¥48.00¥180.00
¥798.00
¥199.00