下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

mysql当中的内存查询详解

作者:课课家教育     来源: http://www.kokojia.com点击数:969发布时间: 2019-03-08 09:42:46

标签: mysql教程mysql查询having

  今天,小编就给大家介绍一下关于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。想要了解更多资讯,可以关注我们课课家教育网站。

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程