SQL语句中,如果有group by 和order by两个语句,是先分组还是先排序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句中,如果有group by 和order by两个语句,是先分组还是先排序?相关的知识,希望对你有一定的参考价值。

group by 语句执行后记录会按关键字自动升序吗?

先进行分组处理。

Group By 和 Having, Where ,Order by这些关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。

首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的记录筛选掉,这样可以减少分组的次数)
然后通过Group By关键字后面指定的分组条件将筛选得到的视图进行分组

接着系统根据Having关键字后面指定的筛选条件,将分组视图后不满足条件的记录筛选掉
最后按照Order By语句对视图进行排序,这样最终的结果就产生了。
在这四个关键字中,只有在Order By语句中才可以使用最终视图的列名,如:

SELECT FruitName, ProductPlace, Price, ID AS IDE, Discount
FROM T_TEST_FRUITINFO
WHERE (ProductPlace = N\'china\')
ORDER BY IDE
这里只有在ORDER BY语句中才可以使用IDE,其他条件语句中如果需要引用列名则只能使用ID,而不能使用IDE。
参考技术A 肯定是group by先

order by优先级最低,在最后

group by 语句执行后记录会按关键字自动升序?
不一定,group by只负责分组。本回答被提问者和网友采纳
参考技术B 先分组,后排序。
建议 养成一个良好的习惯,指定排序
order by c1 asc -- 升序
order by c1 desc -- 降序
参考技术C 这几条关键字 是有先后顺序的.

where.....group by....having.....order by

都是可选..但是如果全部写出来 必须是这个顺序...
参考技术D 按姓名排序:
select 姓名,SUM(销售额) as 销售 from 销售表 order by 姓名 group by 姓名

按销售排序:
select 姓名,SUM(销售额) as 销售 from 销售表 group by 姓名 order by SUM(销售额) desc

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

写的顺序:select ... from... where.... group by... having... order by..
执行顺序:from... where...group by... having.... select ... order by...

 

https://www.cnblogs.com/ldcs/p/11749226.html

以上是关于SQL语句中,如果有group by 和order by两个语句,是先分组还是先排序?的主要内容,如果未能解决你的问题,请参考以下文章

sql语句执行顺序之group by、order by

SQL语句之order by group byhavingwhere

SQL中的group by语句和order by语句怎么用?最好能有个例子

mysql GROUP BY、DISTINCT、ORDER BY语句优化

SQL数据库中查询语句Order By和Group By有啥区别

SQL中group by语句有何作用?