濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > MySQL中一些鮮為人知的排序方式

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

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

前言

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

一、準(zhǔn)備工作

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

二、條件排序

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

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

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

客戶(hù)體驗(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
效果

三、自定義排序

客戶(hù)如上帝,需求花里胡哨也屢見(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í),用戶(hù)創(chuàng)建表字段使用 GBK 字符集時(shí),直接使用ORDER BY 字段 ASC 可以迎刃而解,有些用戶(hù)為了防止亂碼,使用了 utf8 字符集,簡(jiǎn)單的排序語(yǔ)句就無(wú)能為力了(如下左圖),因此在排序時(shí)把字段轉(zhuǎn)換為 GBK 就OK了(如下右圖)。

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

總結(jié)

到此這篇關(guān)于MySQL中一些鮮為人知的排序方式的文章就介紹到這了,更多相關(guān)MySQL排序方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(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對(duì)自增id重新從1排序的方法
  • 數(shù)據(jù)庫(kù)查詢(xún)排序使用隨機(jī)排序結(jié)果示例(Oracle/MySQL/MS SQL Server)
  • MySQL中按照多字段排序及問(wèn)題解決
  • MySQL查詢(xún)優(yōu)化:連接查詢(xún)排序limit(join、order by、limit語(yǔ)句)介紹
  • Mysql利用group by分組排序

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

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

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

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

    巴中市| 宜良县| 江都市| 柳江县| 南雄市| 天祝| 泸溪县| 长兴县| 永昌县| 仁化县| 永定县| 西宁市| 惠东县| 启东市| 阜新| 姜堰市| 涟源市| 葵青区| 娱乐| 阳春市| 台南市| 化隆| 乡宁县| 安达市| 武胜县| 佛山市| 进贤县| 房产| 南乐县| 平遥县| 辉县市| 大城县| 赫章县| 连平县| 喀什市| 绩溪县| 应城市| 伊吾县| 高雄县| 石台县| 依安县|