這篇文章給大家分享的是有關MySQ中排序方式有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
成都創新互聯服務項目包括嶗山網站建設、嶗山網站制作、嶗山網頁制作以及嶗山網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,嶗山網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到嶗山省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!ORDER BY 字段名 升序/降序
,相信進來的朋友都認識這個排序語句,但遇到一些特殊的排序,單單使用字段名就無法滿足需求了,下面給大家介紹幾個我遇到過的排序方法:
一、準備工作
為了更好演示與理解,先準備一張學生表,加入編號、姓名、成績三個字段,插入幾條數據,如圖:
二、條件排序
街邊賣菜的阿姨都能敲,直接使用ORDER BY examScore DESC
輕松完成了(如下左圖)。
客戶體驗最重要,為了方便二次錄入成績,提出這樣的需求純屬正常。要實現該排序,上面的語句是無法實現的,因此就需要用到條件排序,先判斷成績為空賦個較大值,再進行排序,如ORDER BY IF(examScore IS NULL,101,examScore) DESC
也能輕松實現(如下右圖)。
需求 | 需求一 | 需求二 |
---|---|---|
語句 | ORDER BY examScore DESC | ORDER BY IF(examScore IS NULL,101,examScore) DESC |
效果 |
三、自定義排序
客戶如上帝,需求花里胡哨也屢見不鮮,就比如,要求張三李四排在最前面,其他學生按照成績從高到低進行排序。這種情況就需要使用自定義排序了,MySQL 自帶的 FIELD 函數(返回對應字符串的索引)可幫您實現。
語句一:
ORDER BY FIELD(studentName,‘張三’,‘李四’) ASC, examScore DESC;
上面語句運行結果卻把張三李四排到最后了(如下左圖),順理成章的,要把張三李四編排到最前面就進行降序排序。
語句二:
ORDER BY FIELD(studentName,‘李四’,‘張三’) DESC, examScore DESC;
結果果然正中下懷(如下右圖)。
語句 | 語句一 | 語句二 |
---|---|---|
效果 |
后來發現 FIND_IN_SET 函數也能實現,而且使用100萬條數據測試,FIND_IN_SET 性能更優。
ORDER BY FIND_IN_SET(studentName,‘李四,張三’) DESC, examScore DESC;
四、漢字拼音首字母排序
有些朋友就奇怪了,漢字排序直接使用普通的ORDER BY 字段 ASC
輕松完事啦,為什么說鮮為人知呢。
其實,用戶創建表字段使用 GBK 字符集時,直接使用ORDER BY 字段 ASC
可以迎刃而解,有些用戶為了防止亂碼,使用了 utf8 字符集,簡單的排序語句就無能為力了(如下左圖),因此在排序時把字段轉換為 GBK 就OK了(如下右圖)。
語句 | ORDER BY studentName ASC | ORDER BY CONVERT(studentName USING GBK) ASC |
---|---|---|
效果 |
五、猜你喜歡
MySQL遠程連接報錯1130解決方法
MySQL配置主從同步備份
使用過濾器防止SQL注入
感謝各位的閱讀!關于“MySQ中排序方式有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
新聞名稱:MySQ中排序方式有哪些-創新互聯
分享URL:http://m.newbst.com/article20/dcioco.html
成都網站建設公司_創新互聯,為您提供網頁設計公司、企業網站制作、網站改版、響應式網站、動態網站、手機網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯