這篇文章給大家分享的是有關(guān)MySQ中排序方式有哪些的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
ORDER BY 字段名 升序/降序
,相信進(jìn)來(lái)的朋友都認(rèn)識(shí)這個(gè)排序語(yǔ)句,但遇到一些特殊的排序,單單使用字段名就無(wú)法滿足需求了,下面給大家介紹幾個(gè)我遇到過(guò)的排序方法:
一、準(zhǔn)備工作
為了更好演示與理解,先準(zhǔn)備一張學(xué)生表,加入編號(hào)、姓名、成績(jī)?nèi)齻€(gè)字段,插入幾條數(shù)據(jù),如圖:
二、條件排序
街邊賣(mài)菜的阿姨都能敲,直接使用ORDER BY examScore DESC
輕松完成了(如下左圖)。
客戶體驗(yàn)最重要,為了方便二次錄入成績(jī),提出這樣的需求純屬正常。要實(shí)現(xiàn)該排序,上面的語(yǔ)句是無(wú)法實(shí)現(xiàn)的,因此就需要用到條件排序,先判斷成績(jī)?yōu)榭召x個(gè)較大值,再進(jìn)行排序,如ORDER BY IF(examScore IS NULL,101,examScore) DESC
也能輕松實(shí)現(xiàn)(如下右圖)。
需求 | 需求一 | 需求二 |
---|---|---|
語(yǔ)句 | ORDER BY examScore DESC | ORDER BY IF(examScore IS NULL,101,examScore) DESC |
效果 | ![]() | ![]() |
三、自定義排序
客戶如上帝,需求花里胡哨也屢見(jiàn)不鮮,就比如,要求張三李四排在最前面,其他學(xué)生按照成績(jī)從高到低進(jìn)行排序。這種情況就需要使用自定義排序了,MySQL 自帶的 FIELD 函數(shù)(返回對(duì)應(yīng)字符串的索引)可幫您實(shí)現(xiàn)。
語(yǔ)句一:
ORDER BY FIELD(studentName,‘張三’,‘李四’) ASC, examScore DESC;
上面語(yǔ)句運(yùn)行結(jié)果卻把張三李四排到最后了(如下左圖),順理成章的,要把張三李四編排到最前面就進(jìn)行降序排序。
語(yǔ)句二:
ORDER BY FIELD(studentName,‘李四’,‘張三’) DESC, examScore DESC;
結(jié)果果然正中下懷(如下右圖)。
語(yǔ)句 | 語(yǔ)句一 | 語(yǔ)句二 |
---|---|---|
效果 | ![]() | ![]() |
后來(lái)發(fā)現(xiàn) FIND_IN_SET 函數(shù)也能實(shí)現(xiàn),而且使用100萬(wàn)條數(shù)據(jù)測(cè)試,F(xiàn)IND_IN_SET 性能更優(yōu)。
ORDER BY FIND_IN_SET(studentName,‘李四,張三’) DESC, examScore DESC;
四、漢字拼音首字母排序
有些朋友就奇怪了,漢字排序直接使用普通的ORDER BY 字段 ASC
輕松完事啦,為什么說(shuō)鮮為人知呢。
其實(shí),用戶創(chuàng)建表字段使用 GBK 字符集時(shí),直接使用ORDER BY 字段 ASC
可以迎刃而解,有些用戶為了防止亂碼,使用了 utf8 字符集,簡(jiǎn)單的排序語(yǔ)句就無(wú)能為力了(如下左圖),因此在排序時(shí)把字段轉(zhuǎn)換為 GBK 就OK了(如下右圖)。
語(yǔ)句 | ORDER BY studentName ASC | ORDER BY CONVERT(studentName USING GBK) ASC |
---|---|---|
效果 | ![]() | ![]() |
五、猜你喜歡
MySQL遠(yuǎn)程連接報(bào)錯(cuò)1130解決方法
MySQL配置主從同步備份
使用過(guò)濾器防止SQL注入
感謝各位的閱讀!關(guān)于“MySQ中排序方式有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
新聞名稱:MySQ中排序方式有哪些-創(chuàng)新互聯(lián)
分享URL:http://www.chinadenli.net/article20/dcioco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、企業(yè)網(wǎng)站制作、網(wǎng)站改版、響應(yīng)式網(wǎng)站、動(dòng)態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容