mysql当中的内存查询详解

    作者:课课家教育更新于: 2017-04-01 11:44:52

      今天,小编就给大家介绍一下关于MySQL当中的内存查询功能。我们知道,在select查询当中,where查询只可以查询MySQL保存在硬盘的数据,如果是用as定义的变量,或者说用where查询返回的结果集是在内存中的,这时如果对内存当中这一部分数据进行查询,就能用having进行查询。

      (一)用having进行内存查询

      今天小编使用的数据表为我们在前面所创建的cellphone表。

      having运行方式实例,如下:

      内存查询having_mysql教程_mysql查询_having_课课家

    用having进行内存查询

      注意:where跟having是共存,where是在having前面的,由于一定要把磁盘上的数据查出来放在内存后才能用having查这些数据。

      (二)实例:having内存查询

      以下为一个学生成绩查询实例,查询出下表当中2门以及2门以上不及格者(即:mark<60)的平均成绩:

     实例:having内存查询1

    实例:having内存查询2

      以上问题,还存在着一个经常出现的错误答案,如下例:

     经常出现的错误答案

      从上例可以看出,错误的地方在count()统计函数当中出现,score<60会得到一个布尔返回值条件为真结果是1,条件为假结果是0。

    mysql内存结构

      这个时候,不管分数是不是小于60,都可以得到一行值,而count就只统计行数,这就是第一次错误的查询会看来正确的原因,由于jack只有一条记录,当有一个全部及格且大于或等于两条记录的人出现时,count统计出这个人的score<60的结果条数是>=2的,所以就满足havinggk>=2,就显示出这个人。

      总结:以上,我们就可以知道。where是对表或者视图的筛选,having是对做过groupby后的结果进行筛选,不用groupby不能用having。想要了解更多资讯,可以关注我们课课家教育网站。

课课家教育

未登录

1