清秋2018

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

mysql查询排序

1.排序规则

根据select语句中的order by 列名进行排序。

  ASC(ascend): 升序,默认可以不写

  DESC(descend): 降序

  ORDER BY 字句在SELECT语句的结尾

备注:数据库中默认按照先后添加顺序存储数据,在查询时,也按照添加顺序遍历显示结果.因此当我们需要一些特定的数据排列时就要使用到排序

2.单列排序

复制代码
 1 #练习: 按照score从高到低顺序对学生进行排序
 2 SELECT stu_id ,score FROM score  ORDER BY score DESC;
 3 
 4 #练习: 按照score从低到高顺序对学生进行排序
 5 SELECT stu_id ,score FROM score  ORDER BY score ASC;
 6 #升序的ASC可以省略
 7 SELECT stu_id ,score FROM score  ORDER BY score;
 8 
 9 #也可以使用字段的别名进行排序
10 SELECT stu_id ,score fenshu FROM score  ORDER BY fenshu;
复制代码

备注:ORDER BY 的查询字段,不一定非得是上面SELECT的查询字段,即即使没有在SELECT语句中查询表中的相应字段,只要是在表中,就可以使用ORDER BY 语句进行排序

3.多列排序

#练习: 按照score从高到低顺序对学生进行排序,如果分数一样,按id升序排序
SELECT stu_id ,score FROM score  ORDER BY score DESC,stu_id;

备注:在对多列进行排序时,首先排序的第一列必须有相同的列值,才会对第二列及另外的列进行排序,如果第一列的数据中所有的值都是唯一的.将不再对第二列及后面的列进行排序

4.分组后排序

4.1 分组和WHERE、HAVING、ORDER BY的关系

  •       一旦用到的分组,返回的数据只能是分组的 依据字段(用来做标识) 和  使用聚集函数得到的字段,分组的目的就是为了聚集计算
  •       where是在分组之前进行数据过滤,也就是说where先进行排除,排除之后数据才会交给分组进行操作
  •      having是对分组进行过滤,也就是说having是用来剔除不符合我们需求的分组
  •      order by是放在WHERE、HAVING之后用来对输出数据进行排序操作,它排序的依据可以是查询出来的字段,也可以是没有查询出来的字段(分组情况下,要符合相应逻辑)
1 #查询女生平均分大于80的班级,按照平均成绩从小到大进行输出
2 SELECT class_id, AVG(score) AS female_avg_scoreFROM students
3 WHERE gender = 'F'
4 GROUP BY class_id HAVING AVG(score) >= 80
5 ORDER BY female_avg_score;

 

posted on   清秋2018  阅读(2049)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示