wsmwqp
2016-07-10 00:40Mysql中select查询语句中的 group by having的执行顺序
最近在研究Mysql查询语句执行的问题,遇到如下情况
有如下一张表
mysql> select * from test;
+----+------+----------+
| id | name | password |
+----+------+----------+
| 1 | aaa | aaa |
| 2 | bbb | bbb |
| 3 | ccc | ccc |
| 4 | aaa | aaa |
| 5 | bbb | bbb |
| 6 | ddd | ddd |
| 7 | fff | fff |
+----+------+----------+
7 rows in set (0.00 sec)
现在要取出记录相同的数据
首先按照name分组得到下表 :T1
mysql> select * from test group by name;
+----+------+----------+
| id | name | password |
+----+------+----------+
| 1 | aaa | aaa |
| 2 | bbb | bbb |
| 3 | ccc | ccc |
| 6 | ddd | ddd |
| 7 | fff | fff |
+----+------+----------+
5 rows in set (0.00 sec)
然后在根据记录数筛选得到结果
mysql> select * from test group by name having count(*) > 1;
+----+------+----------+
| id | name | password |
+----+------+----------+
| 1 | aaa | aaa |
| 2 | bbb | bbb |
+----+------+----------+
2 rows in set (0.02 sec)
结果倒是得出来了,但是在网上查了很多资料,都说group by执行的顺序先于having
也就是说先执行分组,但是从我以上测试的结果来看,分组之后得到的结果是T1表的数据
在T1表的数据中并没有记录数重复的数据,也就是having count(*)>1的结果应该是不存在的。
想请教一下有没有知道这是啥情况?
- 点赞
- 回答
- 收藏
- 复制链接分享
3条回答
为你推荐
- 关于mysql查询语句问题
- mysql
- 1个回答
- 如何将MYSQL COUNT(*)语句的结果返回到HTML表中的单独列中
- mysql
- php
- 1个回答
- 为什么我的MySQL准备语句不起作用?
- mysql
- php
- 1个回答
- 带有嵌套select语句的MySQL Trigger
- magento
- mysql
- php
- 1个回答
- 使用UNION的SQL语句中的限制WHERE
- sql
- laravel
- mysql
- php
- 1个回答