SQL语句中,如果有group by 和order by两个语句,是先分组还是先排序? group by 语句执行后记录会按关键字自动升序吗?
2017-09-30 15:06
906 查看
SQL语句中,如果有group by 和order by两个语句,是先分组还是先排序?
group by 语句执行后记录会按关键字自动升序吗?楚潇离 | 浏览
16104 次 问题未开放回答
推荐于2016-10-21 16:43:02
最佳答案
先进行分组处理。 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。
本回答由电脑网络分类达人 赵国琴推荐
评论
7 20
尤建波 | 产品经理向TA咨询
擅长: IT
其他回答
肯定是group by先order by优先级最低,在最后
group by 语句执行后记录会按关键字自动升序?
不一定,group by只负责分组。
本回答被提问者采纳
flyingFish211 | 发布于2011-04-22
13:13
评论
15 1
按姓名排序:
select 姓名,SUM(销售额)
as 销售 from 销售表 order by 姓名 group by 姓名
按销售排序:
select 姓名,SUM(销售额)
as 销售 from 销售表 group by 姓名 order by SUM(销售额)
desc
udd1020 | 发布于2011-04-22
13:17
评论
2 0
这几条关键字 是有先后顺序的.
where.....group by....having.....order by
都是可选..但是如果全部写出来 必须是这个顺序...
相关文章推荐
- 替代union all 复杂的sql 并且可以接着双重排序,最主要的是他避免了一条语句两(多)条order by 插件默认执行第一个结束
- MySQL分组排序取前N条记录 以及 生成自动数字序列 的SQL
- SQL语句order by两个字段同时排序。
- SQL语句order by两个字段同时排序
- SQL语句order by两个字段同时排序问题
- SQL语句order by两个字段同时排序
- SQL语句order by两个字段同时排序。
- 当一个SQL语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序
- 【SQL语句】Order by 两个字段同时排序
- SQL语句中order by两个字段同时排序
- GIS应用开发中常用的SQL语句(分组排序取前几条记录)
- MySQL分组排序取前N条记录以及生成自动数字序列--group by 后 limit 外加 rownumber
- MySQL分组排序取前N条记录 以及 生成自动数字序列 的SQL
- SQL语句order by两个字段同时排序。
- SQL语句order by两个字段同时排序
- [MySQL] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit
- [MySQL] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit
- SQL语句order by两个字段同时排序。
- Linq排序、分组、模糊查询、调用外部方法、直接执行SQL语句、事务、修改数据
- MYSQL数据库(十)- 数据表的插入(insert)、删(delete)、改(update)、查(select)、group by 分组、having语句设置分组条件,order by查询结果排序,