区别: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。
两者的区别:
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对结果进行了重新排序。
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
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() 。
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 子句之后。
参考资料: