主頁 > 知識庫 > MySQL中一些鮮為人知的排序方式

MySQL中一些鮮為人知的排序方式

熱門標(biāo)簽:怎樣在地圖標(biāo)注銷售區(qū)域 電話外呼系統(tǒng)改號 外呼系統(tǒng)打電話上限是多少 曲靖移動外呼系統(tǒng)公司 南昌三維地圖標(biāo)注 武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 地圖標(biāo)注費(fèi)用是多少 啥是企業(yè)400電話辦理 百應(yīng)電話機(jī)器人優(yōu)勢

前言

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

一、準(zhǔn)備工作

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

二、條件排序

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

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

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

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

需求 需求一 需求二
語句 ORDER BY examScore DESC ORDER BY IF(examScore IS NULL,101,examScore) DESC
效果

三、自定義排序

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

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

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

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

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

語句 語句一 語句二
效果

后來發(fā)現(xiàn) FIND_IN_SET 函數(shù)也能實(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 輕松完事啦,為什么說鮮為人知呢。
其實(shí),用戶創(chuàng)建表字段使用 GBK 字符集時,直接使用ORDER BY 字段 ASC 可以迎刃而解,有些用戶為了防止亂碼,使用了 utf8 字符集,簡單的排序語句就無能為力了(如下左圖),因此在排序時把字段轉(zhuǎn)換為 GBK 就OK了(如下右圖)。

語句 ORDER BY studentName ASC ORDER BY CONVERT(studentName USING GBK) ASC
效果

總結(jié)

到此這篇關(guān)于MySQL中一些鮮為人知的排序方式的文章就介紹到這了,更多相關(guān)MySQL排序方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Mysql中的排序規(guī)則utf8_unicode_ci、utf8_general_ci的區(qū)別總結(jié)
  • 讓MySQL支持中文排序的實(shí)現(xiàn)方法
  • mysql如何根據(jù)漢字首字母排序
  • Mysql row number()排序函數(shù)的用法和注意
  • Mysql select in 按id排序?qū)崿F(xiàn)方法
  • 兩種mysql對自增id重新從1排序的方法
  • 數(shù)據(jù)庫查詢排序使用隨機(jī)排序結(jié)果示例(Oracle/MySQL/MS SQL Server)
  • MySQL中按照多字段排序及問題解決
  • MySQL查詢優(yōu)化:連接查詢排序limit(join、order by、limit語句)介紹
  • Mysql利用group by分組排序

標(biāo)簽:甘南 吉林 資陽 滄州 黑河 錦州 荊州 隨州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL中一些鮮為人知的排序方式》,本文關(guān)鍵詞  MySQL,中,一些,鮮為人知,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL中一些鮮為人知的排序方式》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL中一些鮮為人知的排序方式的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章

    上一篇:MySQL在線DDL工具 gh-ost的原理解析

    下一篇:Mysql性能優(yōu)化之索引下推