亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    MySQL少有人知的排序方式

    免費學(xué)習(xí)推薦:mysql視頻教程

    ORDER BY 字段名 升序/降序,相信進(jìn)來的朋友都認(rèn)識這個排序語句,但遇到一些特殊的排序,單單使用字段名就無法滿足需求了,下面給大家介紹幾個我遇到過的排序方法:

    一、準(zhǔn)備工作

    為了更好演示與理解,先準(zhǔn)備一張學(xué)生表,加入編號、姓名、成績?nèi)齻€字段,插入幾條數(shù)據(jù),如圖:
    MySQL少有人知的排序方式

    二、條件排序

    需求一:成績從高到低進(jìn)行排序

    街邊賣菜的阿姨都能敲,直接使用 ORDER BY examScore DESC 輕松完成了(如下左圖)。

    需求二:成績從高到低進(jìn)行排序,并且沒錄入成績的排在最前面

    客戶體驗最重要,為了方便二次錄入成績,提出這樣的需求純屬正常。要實現(xiàn)該排序,上面的語句是無法實現(xiàn)的,因此就需要用到條件排序,先判斷成績?yōu)榭召x個最大值,再進(jìn)行排序,如 ORDER BY IF(examScore IS NULL,101,examScore) DESC 也能輕松實現(xiàn)(如下右圖)。

    需求 需求一 需求二
    語句 ORDER BY examScore DESC ORDER BY IF(examScore IS NULL,101,examScore) DESC
    效果 MySQL少有人知的排序方式 MySQL少有人知的排序方式

    三、自定義排序

    客戶如上帝,需求花里胡哨也屢見不鮮,就比如,要求張三李四排在最前面,其他學(xué)生按照成績從高到低進(jìn)行排序。這種情況就需要使用自定義排序了,MySQL 自帶的 FIELD 函數(shù)(返回對應(yīng)字符串的索引)可幫您實現(xiàn)。

    語句一:
    ORDER BY FIELD(studentName,‘張三’,‘李四’) ASC, examScore DESC;

    上面語句運行結(jié)果卻把張三李四排到最后了(如下左圖),順理成章的,要把張三李四編排到最前面就進(jìn)行降序排序。

    語句二:
    ORDER BY FIELD(studentName,‘李四’,‘張三’) DESC, examScore DESC;

    結(jié)果果然正中下懷(如下右圖)。

    語句 語句一 語句二
    效果 MySQL少有人知的排序方式 MySQL少有人知的排序方式

    后來發(fā)現(xiàn) FIND_IN_SET 函數(shù)也能實現(xiàn),而且使用100萬條數(shù)據(jù)測試,F(xiàn)IND_IN_SET 性能更優(yōu)。

    ORDER BY FIND_IN_SET(studentName,‘李四,張三’) DESC, examScore DESC;

    四、漢字拼音首字母排序

    有些朋友就奇怪了,漢字排序直接使用普通的 ORDER BY 字段 ASC 輕松完事啦,為什么說鮮為人知呢。
    其實,用戶創(chuàng)建表字段使用 GBK 字符集時,直接使用ORDER BY 字段 ASC 可以迎刃而解,有些用戶為了防止亂碼,使用了 utf8 字符集,簡單的排序語句就無能為力了(如下左圖),因此在排序時把字段轉(zhuǎn)換為 GBK 就OK了(如下右圖)。

    語句 ORDER BY studentName ASC ORDER BY CONVERT(studentName USING GBK) ASC
    效果 MySQL少有人知的排序方式 MySQL少有人知的排序方式

    五、猜你喜歡

    • MySQL遠(yuǎn)程連接報錯1130解決方法
    • MySQL配置主從同步備份
    • 使用過濾器防止SQL注入

    相關(guān)免費學(xué)習(xí)推薦:mysql數(shù)據(jù)庫(視頻)

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號