wsmwqp 2016-07-10 00:40 采纳率: 0%
浏览 1802

Mysql中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条回答 默认 最新

  • Robot-S 2016-07-10 01:19
    关注

    查询语句中select from where group by having order by的执行顺序

     

    1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 

    select--from--where--group by--having--order by 

     

    其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 

    与sql语......
    答案就在这里:查询语句中select from where group by having order by的执行顺序
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致