Sql order by 和 group BY 如何共同运用?

 我来答
大野瘦子
高粉答主

2018-12-09 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:33.2万
展开全部

1、如果声明了 GROUP BY 子句,输出就分成匹配一个或多个数值的不同组里。如果出现了 HAVING 子句,那么它消除那些不满足给出条件的组。

2、如果声明了 ORDER BY 子句,那么返回的行是按照指定的顺序排序的。如果没有给出 ORDER BY,那么数据行是按照系统认为可以最快生成的方法给出的。

例如:

select name,count(*) number

from users

group by name

order by 2 desc

查询users表中,相同姓名的人有多少个,按照重名次数最多的人名从多而少排列。

扩展资料:

GROUP BY 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面。

group by a,b,c       则a,b,c三个字段是按照先按a字段对数据行进行排序,再按b字段对那些字段a为同一个值的数据行进行排序,再再按c字段对那些字段a为同一个值且字段b为同一个值的数据行进行排序

order  by a,b,c   也是如此

故而

表T 有a,b,c三个字段,按a分组再按c排序的方法如下:

select * from T order  by a,c//两个字段顺序不能颠倒

或者

select * from T group  by a,c//两个字段顺序不能颠倒

百度网友e425885af
2011-10-28 · TA获得超过7650个赞
知道大有可为答主
回答量:2940
采纳率:0%
帮助的人:2707万
展开全部
我什么都不说了,举个例子吧,话说的再多,也没有例子好用
select name,count(*) number
from users
group by name
order by 2 desc
查询users表中,相同姓名的人有多少个,按照重名次数最多的人名从多而少排列
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
极天异云
2011-10-28 · TA获得超过1054个赞
知道小有建树答主
回答量:1170
采纳率:42%
帮助的人:391万
展开全部
先group by
然后再order by
order by 总是应该最后执行的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友801b91b
2011-10-28 · TA获得超过8071个赞
知道大有可为答主
回答量:1152
采纳率:100%
帮助的人:1675万
展开全部
如果声明了 GROUP BY 子句,输出就分成匹配一个或多个数值的不同组里。 如果出现了 HAVING 子句,那么它消除那些不满足给出条件的组。

如果声明了 ORDER BY 子句,那么返回的行是按照指定的顺序排序的。 如果没有给出 ORDER BY,那么数据行是按照系统认为可以最快生成的方法给出的。

虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下:
  SELECT select_list
  [ INTO new_table ]
  FROM table_source
  [ WHERE search_condition ]
  [ GROUP BY group_by_expression ]
  [ HAVING search_condition ]
  [ ORDER BY order_expression [ ASC | DESC ] ]
  可以在查询之间使用 UNION 运算符,以将查询的结果组合成单个结果集。

也就是说,order by放在最后面。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanghahaha1230
2011-10-28
知道答主
回答量:7
采纳率:0%
帮助的人:1.2万
展开全部
group by 是分组,order by 是排序,先group by 再order by
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式