💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤
📃个人主页 :阿然成长日记 👈点击可跳转
🚩 不能则学,不知则问,耻于问人,决无长进
🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍
文章目录
⬇️创建一个学生成绩表,供后续使用
一、排序ORDER BY
1.ORDER BY的格式:
SELECT
[DISTINCT ] 【*
或 字段名1,字段名2……】
FROM
【表名字 】
WHERE
【查询条件】ORDER BY 【字段名】ASC/DESC;、
2.ORDER BY的作用:
ORDER BY
关键字可以深紫色文字使查询返回的结果集按照指定的列进行排序,可以按照某一列排序或者同时按照多列进行排序,排序的顺序可以升序或者降序。
3.ORDER BY的使用:
1️⃣ 按照字段名排序
ORDER BY 关键字可以按照某「列名」进行排序,列名就是字段名
例如:
根据id对学生进行排序
执行语句:
查询结果:
2️⃣按字段照序号进行排序
格式:ORDER BY
n 表示,以“第n个字段”排序。
从左到右(1–n)
例如:根据第三个进行排序
执行语句
3️⃣降序DESC
在ORDER BY语句中,如果没有写排序规则,默认是ASC升序。如果想要降序,则必须加DESC后缀
例如:根据id降序排列
执行语句
4️⃣根据多列排序
例如:
根据数学成绩和id进行排序。
首先会进行数学成绩排队,如果相同,则只根据数学成绩排序。如果有相同的,则会再根据id序号进行排序。
执行语句
5️⃣还可以结合搭配函数或者一些查询条件使用。
执行语句
二、遇到NULL的情况
1.使用场景
当我们使用order by对某一字段进行排序时,该字段中包含null值,这种情况下,排序就会出现问题,我们可以根据实际情况,指定为空的排在前面或者排在后面。
2.直接默认排序(不加排序规则)
执行语句
可以发现NULL值被默认放到了最后。
3.使用ASC升序
可以发现NULL值又被放到了最前面。
4. 使用 IF ( isnull (字段名称),1,0)
执行语句
可以发现NULL值又跑到了最下面。
📝总结:
可以这样想,便于记忆:
(1)默认排序规则【升序,NULL在最下main】
(2)标明排序规则:NULL最小升序ASC肯定是排最上面,降序时DESC最小的NULL值放在最下面。
(3)如果需要变化,那么就使用特定格式。
🚩 ORDER BY排序与索引关系的注意事项
注意: ORDER BY的使用位置非常关键,甚至会影响查询性能。
通过验证得知:order by 中的字段出现在where条件中时,才会利用索引而不排序,更准确的说,order by 中的字段在执行计划中利用了索引时,不用排序操作
还应注意,在这里我使用的INNODB引擎,不同的引擎在排序方法上有所不同,不同的引擎,会有不同的查询速率。
后续会对索引进行单独讲解,在这仅仅一提。