测试order by 是在group by之前执行的还是之后执行的

原创 2007年10月09日 09:24:00
问:
2id2yR,S{2HD(I31957select ...from ... group by ... order by ...
z7QL({ pDq:z@31957在这条语句里面  order by 是在group by之前执行的还是之后执行的?
|5s$C6uo31957PHPChina 开源社区门户 Vghlm&@
例如现在有这样的表test
6n(|/c9Clu'_r31957id    name    age
d FRX.R-e319571     aaa     20PHPChina 开源社区门户y2Y3?I@Z)}
2     bbb     25
3`1|4kq(Rz? oO9AUu319573     ccc     20
!Tcmf"vE&V)A&S_9v319574     ddd     25PHPChina 开源社区门户#S9h7c%l#aC!O
现在PHPChina 开源社区门户 E,dh_By_K
select * from test group by agePHPChina 开源社区门户+i+^oa1D`_
出来的结果是PHPChina 开源社区门户 M3chB4exT2V
id    name   agePHPChina 开源社区门户b.o/LY(U1T+}~5v
1     aaa    20
5[7qb#ZoR!T319572     bbb    25
+f5q,mU#^ N31957PHPChina 开源社区门户(W3t"u6Y�Mw3t
那么PHPChina 开源社区门户J,hm` A Q
select * from test group by age order by id descPHPChina 开源社区门户6mk1mWc[
是否会是PHPChina 开源社区门户�MU,yCQ8^wS$|
id    name   agePHPChina 开源社区门户 v#wa`z
4     ddd    25PHPChina 开源社区门户%[uYU g+EWF
3     ccc    20PHPChina 开源社区门户2n3{.{fjzH$H
还是PHPChina 开源社区门户bM~q/{~S|X
id    name   agePHPChina 开源社区门户cpt4r4n$n0z4X|w
2     bbb    25PHPChina 开源社区门户)om}N*@�W.ha2v
1     aaa    20 PHPChina 开源社区门户,p1v:A$KQ�Tq
PHPChina 开源社区门户(UDO%{!RMV
PHPChina 开源社区门户F#_!o {[ H
PHPChina 开源社区门户P u,r({8R`q'Jy
答案:PHPChina 开源社区门户9/*b,pDR ]'x,I6vW
id    name   age
0d"RmQ{$GK31957 2     bbb    25PHPChina 开源社区门户D|,h|(Q'])}[
1     aaa    20
*u0T}!A2^%I}d31957PHPChina 开源社区门户M:Os.O p(`
即order by 是在group by之后执行的
p.A(A$Qb$s-V1}HQ'~31957
N:L2B!h[T31957这里有人可能有这样的需求,把刚才的那个表按年龄分组后,取出每组中id最大的那个人。
;|#w6A|m@K31957
4U8to8ft31957那么这个时候怎么处理呢?
J,Xf2[�[d#K6A x31957答案:
p&Qw e4`1R r2a31957select max(id), age from test group by agePHPChina 开源社区门户]x}^9Y+p
id   age
{2M)Go#IVbM _0HM319573    20PHPChina 开源社区门户 y8z.at m3Xh'R
4    25
z;O)wcd5o#n/u'W}31957PHPChina 开源社区门户gGCd3Z'{

M }Pl4j2^J31957注意,不要想当然的认为可以使用PHPChina 开源社区门户.g1p9rO0x$oN
select max(id), name, age from test group by agePHPChina 开源社区门户!nr!Id3wp,L7m
因为max(id), age 与name 将会不对应PHPChina 开源社区门户,q1B#Dv0h]y|,zf
比如刚才的这个语句会出现以下的结果
VY)S%N.s1N4r31957 id    name   age
-X8P1X*mJ%_319573     aaa    20PHPChina 开源社区门户tTsF-U)]}+n
4     bbb    25PHPChina 开源社区门户%R#M)rWw:xo R:^R
我们注意到id->3 与name->aaa 根本不是同一条数据
"ej8x0y/s-gt6/m31957PHPChina 开源社区门户x*@(`y[d K'p9a
 

浅谈group by和order by的用法和区别

前一段时间的面试,问道这个问题,不太清楚了,感觉有必要来总结一下。话不多说,直接开始吧! 一、order by的用法 使用order by,一般是用来,依照查询结果的某一列(或多列)属性,进行排序(...
  • jiangxindu1
  • jiangxindu1
  • 2015年09月01日 02:26
  • 30237

GROUP BY 和 ORDER BY一起使用

====================== 写程序也有很长的一段时间了,有些东西我总不曾去思考,很少去积累一些有用的东西,总喜欢“用要即拿”的心态来对待,这是非常不好的坏习惯。这样只会造成依赖心太...
  • haiross
  • haiross
  • 2014年08月28日 14:51
  • 161163

SQL中order by 、group by 、having的用法区别

Having 这个是用在聚合函数的用法。当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算。运算完后就要用到HAVING 的用法了,就是进行判断了,例如说...
  • freshlover
  • freshlover
  • 2013年03月01日 18:15
  • 29619

mysql group by 与order by 一起使用

今天在做mysql分组查询的时候遇到一个问题:    我需要把数据分组排序,于是就想到先group by 然后 order by,可以运行的时候报错    于是上午搜了下才发现group by 与or...
  • WonderFey
  • WonderFey
  • 2017年09月04日 12:12
  • 3475

order by 和 group by 的区别

order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。 group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使...
  • qq_26975307
  • qq_26975307
  • 2017年01月03日 20:15
  • 1302

sql语句中group by 与order by的区别

sql 里的 order by 和 group by 的区别: order by  是按字段排序 group by  是按字段分类       order by 从英文里理解...
  • Truong
  • Truong
  • 2013年03月16日 14:12
  • 828

sql group by,order by

1、sum(*) 后group by,先分组,然后组内部求和; 2、where 必须在group by前面,筛选where条件再分组; 3、group by 后加order by,先分组再组外部排...
  • u010286334
  • u010286334
  • 2017年06月09日 17:31
  • 75

sql语句select group by order by where一般先后顺序

写的顺序:select ... from... where.... group by... having... order by.. 执行顺序:from... where...group by......
  • booooooooooooooooooo
  • booooooooooooooooooo
  • 2012年11月21日 19:05
  • 7445

sql篇 select from where group by having order by

以前,自己总是记不住如何用group by,如何用order by,什么时候用group by,什么时候用order by,什么时候两者一起用,怎么用,谁先谁后,现在,我们就一起来说一下Select ...
  • u013045878
  • u013045878
  • 2016年08月12日 15:58
  • 3660

GROUP BY 跟 ORDER BY一起使用

正确使用如下: SELECT dep.department_name, MAX(emp.salary), MIN(emp.salary) FROM departments dep LEF...
  • lutinghuan
  • lutinghuan
  • 2012年04月22日 13:29
  • 12657
收藏助手
不良信息举报
您举报文章:测试order by 是在group by之前执行的还是之后执行的
举报原因:
原因补充:

(最多只允许输入30个字)