一、实验准备
实验对象:mysql5.7.36-log
实验环境:
1、Microsoft Windows 版本21H2(操作系统内部版本19044.2006)
2、一张有一个字段可供排序有一个字段可供分组的表
二、实验过程
1、执行只有排序,未分组的的sql
select guid,ModifiedTime from mesdatalog where MachCode='OP15' -- group by MachCode
order by ModifiedTime desc;
得到下面的结果:
guid ModifiedTime
135 2022/11/6 8:29:00
130 2022/11/1 8:29:00
125 2022/10/27 8:29:00
120 2022/10/22 8:29:00
115 2022/10/17 8:29:00
2、执行即排序又分组的sql
select guid,ModifiedTime from mesdatalog where MachCode='OP15' group by MachCode
order by ModifiedTime desc;
得到下面的结果:
guid ModifiedTime
115 2022/10/17 8:29:00
3、可初步看出在"执行即排序又分组的sql"中,先执行的分组再执行的排序。
4、多查几条验证
① 执行只有排序,未分组的的sql
select MachCode,guid,ModifiedTime from mesdatalog where MachCode in ('OP15','OP14','OP13','OP12') -- group by MachCode
order by ModifiedTime desc;
MachCode guid ModifiedTime(如果下面②得到的不是粗体标识的数据,则证明上面我们得出的结论)
OP15 135 2022/11/6 8:29:00
OP14 134 2022/11/5 8:29:00
OP13 133 2022/11/4 8:29:00
OP12 132 2022/11/3 8:29:00
OP15 130 2022/11/1 8:29:00
OP14 129 2022/10/31 8:29:00
OP13 128 2022/10/30 8:29:00
OP12 127 2022/10/29 8:29:00
OP15 125 2022/10/27 8:29:00
OP14 124 2022/10/26 8:29:00
OP13 123 2022/10/25 8:29:00
OP12 122 2022/10/24 8:29:00
OP15 115 2022/10/17 8:29:00
OP14 114 2022/10/16 8:29:00
OP13 113 2022/10/15 8:29:00
OP12 112 2022/10/14 8:29:00
② 执行即排序又分组的sql
select MachCode,guid,ModifiedTime from mesdatalog where MachCode in ('OP15','OP14','OP13','OP12') group by MachCode
order by ModifiedTime desc;
MachCode guid ModifiedTime
OP15 115 2022/10/17 8:29:00
OP14 114 2022/10/16 8:29:00
OP13 113 2022/10/15 8:29:00
OP12 112 2022/10/14 8:29:00
③ 可看出,上面的结论3得出的结论成立,即:在mysql(版本5.7.36-log)中执行型如 select 字段 from 表 where 条件 group by 字段 by 字段;
即排序又分组的sql中,先执行的分组再执行的排序。
三、实验结论:
在mysql(版本5.7.36-log)中执行型如 select 字段 from 表 where 条件 group by 字段 by 字段;
即排序又分组的sql中,先执行的分组再执行的排序。