如何對(duì)Mysql數(shù)據(jù)表查詢出來(lái)的結(jié)果進(jìn)行排序
1 前提
這里采用的都是標(biāo)準(zhǔn)SQL語(yǔ)句,其他數(shù)據(jù)庫(kù)的查詢出來(lái)的結(jié)果也可以通過(guò)這些語(yǔ)句來(lái)進(jìn)行排序,
2 如何用
2.1 只有一個(gè)排序字段
2.1.1 相應(yīng)的具體語(yǔ)法
SELECT 字段1,字段2....字段n FROM 表名 ORDER BY 需要排序的字段1 排序規(guī)則; /* 首先執(zhí)行FROM子句,再去執(zhí)行SELECT子句,找到滿足條件的數(shù)據(jù)行,然后再把滿足條件的數(shù)據(jù)行 按照排序字段1的排序規(guī)則進(jìn)行排序 其中排序規(guī)則有升序和降序,默認(rèn)不寫(xiě)就是升序 升序需要寫(xiě)的關(guān)鍵字為ASC,降序需要寫(xiě)的關(guān)鍵字為DESC 注意:不要和desc 表名搞混,這個(gè)是展示表的結(jié)構(gòu) */
2.1.2 示例sql語(yǔ)句
SELECT * FROM student01 ORDER BY age; /* 把查詢得到的student01的所有數(shù)據(jù)行按照age字段進(jìn)行升序排列 */
2.1.3 示例sql語(yǔ)句運(yùn)行截圖
2.2 有多個(gè)排序字段
2.2.1 相應(yīng)的具體語(yǔ)法
SELECT 字段1,字段2....字段n FROM 表名 ORDER BY 需要排序的字段1 排序規(guī)則,需要排序字段2 排序規(guī)則.....需要排序字段n 排序規(guī)則; /* 首先執(zhí)行FROM子句,再去執(zhí)行SELECT子句,找到滿足條件的數(shù)據(jù)行,然后再把滿足條件的數(shù)據(jù)行 按照排序字段1的排序規(guī)則進(jìn)行排序,若排序字段1內(nèi)容相等,則按照排序字段2進(jìn)行相應(yīng)規(guī)則的排序 后面的字段也是依次類推 其中排序規(guī)則有升序和降序,默認(rèn)不寫(xiě)就是升序 升序需要寫(xiě)的關(guān)鍵字為ASC,降序需要寫(xiě)的關(guān)鍵字為DESC 注意:不要和desc 表名搞混,這個(gè)是展示表的結(jié)構(gòu) */
2.2.2 示例sql語(yǔ)句
SELECT * FROM student01 ORDER BY age,name DESC; /* 對(duì)SELECT子句中查詢到的數(shù)據(jù)行先進(jìn)行age字段的升序排序,當(dāng)age字段年齡相同時(shí),則按照name字段進(jìn)行降序排列 */
2.2.3 示例sql語(yǔ)句運(yùn)行截圖
3 補(bǔ)充說(shuō)明
3.1 ORDER BY子句里面也可以寫(xiě)別名
3.1.1 基本語(yǔ)法
SELECT 字段1 AS '別名1',字段2 AS '別名2'...字段n AS '別名n' FROM 表名 ORDER BY '別名1' 排序規(guī)則,'別名2' 排序規(guī)則....'別名n' 排序規(guī)則n;
3.1.2 示例sql語(yǔ)句
SELECT name AS '姓名',age AS '年齡' FROM student01 ORDER BY 年齡 ASC,姓名 DESC; /* 如果別名是帶單引號(hào)的中文的話,在ORDER BY子句中使用別名不用加上單引號(hào) */
3.1.3 示例sql語(yǔ)句運(yùn)行截圖
3.2 ORDER BY子句的執(zhí)行順序
ORDER BY子句的執(zhí)行順序永遠(yuǎn)在最后,再具體一點(diǎn)來(lái)說(shuō)就是,ORDER BY子句的執(zhí)行順序永遠(yuǎn)在SELECT 子句的執(zhí)行之后
理由:
因?yàn)槟愕冒押Y選過(guò)、已經(jīng)分組完成后的數(shù)據(jù)行拿到后才能進(jìn)行排序,不然你先排序,然后再去分組,然后再還是要去排序,那這樣之前的排序操作就沒(méi)有任何意義了
3.3 ORDER BY子句雖然可以使用列編號(hào)進(jìn)行排序(從1開(kāi)始)
但是不建議這么用,因?yàn)殚喿x體驗(yàn)感極差
3.3.1 基本語(yǔ)法
SELECT 字段1,字段2 ...字段n FROM 表名 ORDER BY 列編號(hào) 排序規(guī)則,列編號(hào) 排序規(guī)則....列編號(hào) 排序規(guī)則n; /* 列編號(hào)從1開(kāi)始,依次遞增,其中1代表數(shù)據(jù)庫(kù)的第一列即為數(shù)據(jù)表的第一個(gè)字段所在的列 */
3.3.2 示例sql語(yǔ)句
SELECT name,age FROM student01 ORDER BY 2,1 DESC; /* 列編號(hào)這種寫(xiě)法建議不要寫(xiě),因?yàn)殚喿x體驗(yàn)感極差,然后知道有這個(gè)用法 就行,看見(jiàn)別人寫(xiě)這種寫(xiě)法的話,只要自己能看懂就行 */
3.3.3 示例sql語(yǔ)句運(yùn)行截圖
3.4 如果排序的字段里面有null值的話
會(huì)把null值放在最前面(升序)或者最后面(降序)
3.4.1 示例sql代碼
SELECT * FROM student01 ORDER BY age DESC;
3.4.2 示例sql代碼運(yùn)行截圖
3.5 ORDER BY可以使用SELECT 語(yǔ)句中的所有字段
也可以使用聚合函數(shù)
3.5.1 示例sql代碼
SELECT name FROM student01 ORDER BY age ASC; /* ORDER BY中參與排序的字段可以是student01表中的任意一個(gè)字段 */
3.5.2 示例sql代碼運(yùn)行截圖
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringMVC Cron定時(shí)器Demo常見(jiàn)問(wèn)題解決方案
這篇文章主要介紹了SpringMVC Cron定時(shí)器Demo常見(jiàn)問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11SpringBoot2 參數(shù)管理實(shí)踐之入?yún)⒊鰠⑴c校驗(yàn)的方式
這篇文章主要介紹了SpringBoot2 參數(shù)管理實(shí)踐,入?yún)⒊鰠⑴c校驗(yàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-06-06springboot?vue測(cè)試前端項(xiàng)目管理列表分頁(yè)功能實(shí)現(xiàn)
這篇文章主要為大家介紹了springboot?vue測(cè)試前端項(xiàng)目列表分頁(yè)功能實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05JDK動(dòng)態(tài)代理原理:只能代理接口,不能代理類問(wèn)題
這篇文章主要介紹了JDK動(dòng)態(tài)代理原理:只能代理接口,不能代理類問(wèn)題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Gradle的安裝和IDEA集成、項(xiàng)目導(dǎo)入的詳細(xì)教程
這篇文章主要介紹了Gradle的安裝和IDEA集成、項(xiàng)目導(dǎo)入的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08java使double保留兩位小數(shù)的多方法 java保留兩位小數(shù)
這篇文章主要介紹了java使double類型保留兩位小數(shù)的方法,大家參考使用吧2014-01-01SpringBoot整合HTTPS的項(xiàng)目實(shí)踐
HTTPS的主要作用是通過(guò)SSL證書(shū)保護(hù)用戶數(shù)據(jù)的安全與隱私,增加網(wǎng)站信任度,防止數(shù)據(jù)被竊取和篡改,保護(hù)網(wǎng)站免受釣魚(yú)攻擊,本文就來(lái)介紹一下,感興趣的可以了解一下2024-10-10