为了账号安全,请及时绑定邮箱和手机立即绑定

为什么age<20查不出结果呢,明明有3个age小于20的

mysql> SELECT*FROM users3;
+----+----------+----------------------------------+-----+------+
| id | username | password                         | age | sex  |
+----+----------+----------------------------------+-----+------+
|  1 | Tom      | 123                              |  29 |    0 |
|  2 | John     | 456                              |  38 |    0 |
|  3 | Tom      | 123                              |  27 |    0 |
|  4 | Tom      | 123                              |  27 |    0 |
|  5 | Tom      | 123                              |  10 |    0 |
|  7 | Rose     | 202cb962ac59075b964b07152d234b70 |   8 |    0 |
|  8 | Ben      | 456                              |  17 |    0 |
|  9 | 111      | 222                              |  33 | NULL |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)

mysql> SELECT sex,age FROM users3 GROUP BY sex HAVING age<20;
Empty set (0.00 sec)

mysql>


正在回答

4 回答

我觉得输入这一行应该会得到你想的结果:

SELECT username FROM users3 GROUP BY age HAVING age<20;

0 回复 有任何疑惑可以回复我~
#1

Tayen

查找的字段里必须出现age字段才能对age进行分组以及把age作为分组条件
2017-10-12 回复 有任何疑惑可以回复我~

用group by进行分组时,只会输出分组相同的第一条记录。所以你这样group by之后,得到的结果是

sex age

0     29

NULL 33.

然后在这里面,再去判断是否有age<20,那自然是没了~。一般来说having条件是非聚合函数的话是没什么意义的,那还不如where提前就筛选掉呢~

5 回复 有任何疑惑可以回复我~

并不是没有显示,而是age<20的三个记录的sex都为0.归为一组,显示结果是一个组,

0 回复 有任何疑惑可以回复我~

我也是遇到了同样的问题,

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396647    人
  • 解答问题       3497    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

为什么age<20查不出结果呢,明明有3个age小于20的

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号