sql中order by和group by的区别

RT,请明确指出... RT,请明确指出 展开
 我来答
rising1669
2019-03-02 · TA获得超过689个赞
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

区别:order by是排序,group by是分组。

order by:默认是ASC,按升序排列,DESC降序排列。order by执行后会进行全表扫描,降低性能,如果数据量特别大的时候,要排序的话尽量按照组合索引中的字段进行order by。

group by:把相同的列放到一组。group by的实现过程除了要使用排序操作外,还要进行分组操作。group by操作想要利用索引,必须满足group by字段必须同时存放于同一个索引中,且该索引是一个有序索引,而且,使用不同的聚合函数也会影响是否使用索引来实现group by操作。

扩展资料

order by 后面可以跟多个字段,优先级按先后顺序。

group by 后面要搭配聚合函数一起使用,没有在group by后的字段,select的时候必须使用聚合函数(sum,count,max,min)。group by 可以和having一起使用来对数据过滤,having后面也必须是聚合函数。如:select no,count(1) from test group by no having count(1) > 1。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
supboy306
推荐于2019-10-11 · TA获得超过2.6万个赞
知道答主
回答量:243
采纳率:100%
帮助的人:12.9万
展开全部

两者的区别:

1、意义、用法不同:

order by :功能是排序,依照查询结果集的某一列(或多列)属性,进行排序(升序:ASC;降序:DESC;默认为升序);

group by:功能是分组汇总,group by按照查询结果集中的某一列(或多列),进行分组,值相等的为一组。

2、应用范围不同:

order by 可以在任何查询语句中,可对查询中的任意字段进行排序。

group by 若要使用,则必须在查询中搭配聚合函数,如sum(),avg()之类的。

3、作用对象不同:

order by作用在于将查询的结果进行排序,并不影响你查询的整体结果,只是变更了顺序;

group by子句的作用对象是查询时的中间结果表,对中间结果表进行汇总之后形成最终的结果表,也就是对查询结果产生了影响。

扩展资料:

我们通过几个示例来加深对group by和order by区别的理解。

已知存在一个积分tabjf表,如下:

1、利用order by子句,以name字段进行排序。sql:select * from tabjf order by name;

输出结果为:

2、利用group by子句,仍以name字段进行分组汇总求JF之和。

sql:select name,sum(JF) as sumJF from tabjf group by name ;

输出结果为:

3、将group by 和order by组合一起使用。

sql:select name,sum(JF) as sumJF from tabjf group by name  ordery by name;

输出结果为:

可以看出,oder by在group by分组的基础上,又根据name对结果进行了重新排序。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljh无名小卒
2019-02-08 · TA获得超过2818个赞
知道答主
回答量:248
采纳率:28%
帮助的人:20.4万
展开全部

1、解释不同

order by是SQL语句中的关键字,用于对查询结果的排序。ORDER BY 语句用于对结果集进行排序,默认的为升序。

group by语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。

2、字段不同

order by是按字段排序,后面必须列出排序的字段名,可以是多个字段名。

group by是按字段分类 ,必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。 

3、sql命令格式优先顺序不同

group By关键字先对指定的分组条件将筛选得到的视图进行分组,将分组视图后不满足条件的记录筛选掉。

order By语句最后对视图进行排序,最终的结果就产生了。

扩展资料

order by和group by的用法示例

1、select * from 学生表 order by 年龄    

查询学生表信息、按年龄的升序(默认、可缺省、从低到高)排列显示。

2、select 学号,SUM(成绩) from 选课表 group by 学号  

按学号分组、查询每个学号的总成绩。

3、select 学号,AVG(成绩) from 选课表  group by 学号 having AVG(成绩)>(select AVG(成绩) from 选课表 where 课程号='001') order by AVG(成绩) desc

查询平均成绩大于001课程平均成绩的学号、并按平均成绩的降序排列。

参考资料来源:百度百科-order by

参考资料来源:百度百科-group by

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
木鱼634
推荐于2019-11-09 · TA获得超过6842个赞
知道答主
回答量:55
采纳率:0%
帮助的人:7811
展开全部

1、意思不一样:

order by是指从英文里理解就是行的排序方式,默认的为升序。后面必须列出排序的字段名,可以是多个字段名;

group by是指从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。 

2、排序方式不一样:

order by是指按字段排序;

group by是指按字段分类 。

3、sql命令格式优先顺序不一样:

order by要滞后;

group by要优先。

4、用法不一样:

order by是按指定的列的升序或降序来给查询结果排序;

group by是按指定的列对满足Where条件的所有记录分组,并对组内的一些数值型栏位计算出每组的一个统计指标,如求和、求个数、求平均值、求最大值、求最小值等等。

5、适用语境不一样:

order by子句能用于查找组记录特征和某条记录的详细信息;

group by子句只能用于查找组记录特征,但不能查找某条记录的详细信息。 

6、使用的函数不一样:

order by子句中的列必须包含在聚合函数或 GROUP BY 子句中;

group by子句中可使用的函数AVG()  、MIN() 、 MAX()  、SUM() 、COUNT() 。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皮蛋粯子粥
高粉答主

推荐于2019-08-16 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1398
采纳率:79%
帮助的人:42.3万
展开全部

sql中order by和group by的区别:

1、定义不同:

order by  :是按表中某字段排列表中数据
group by :是按某些字段分类。

2、用法不同:

order by :用于排序,一般与asc升序或desc降序一起使用。

group by :用于分类汇总,一般与聚合函数(比如avg平均、sum合计、max最大、min最小、count计算行)一起使用。

3、使用效果不同:

order by :

例句:select product from orders 查询所有product列,包括重复的

结果:

group by :

例句:select product from orders GROUP BY product:查询结果只输出product不同的元素列,不包括重复的

结果:

4、在排序ysql不同:

ysql 中order by 与group by的顺序 是:select、from、where、group by、order by

order by :顺序在ysql 中第五位。

group by:顺序在ysql 中第四位。

5、 SELECT语句前后顺序不同:

在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。

order by :GROUP BY 子句放在ORDER BY 子句之前。

group by:group by 子句放在 WHERE 子句之后。

参考资料:

百度百科:SQL ORDER BY

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式