欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年03月18日 09:24:07   作者:踮腳敲代碼  
這篇文章主要給大家介紹了關(guān)于MySQL中一些鮮為人知的排序方式,文中介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

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

一、準備工作

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

二、條件排序

需求一:成績從高到低進行排序

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

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

客戶體驗最重要,為了方便二次錄入成績,提出這樣的需求純屬正常。要實現(xiàn)該排序,上面的語句是無法實現(xiàn)的,因此就需要用到條件排序,先判斷成績?yōu)榭召x個最大值,再進行排序,如 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 自帶的 FIELD 函數(shù)(返回對應(yīng)字符串的索引)可幫您實現(xiàn)。

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

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

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

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

語句 語句一 語句二
效果 在這里插入圖片描述 在這里插入圖片描述

后來發(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
效果 在這里插入圖片描述 在這里插入圖片描述

總結(jié)

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

相關(guān)文章

  • 從0到1學會MySQL單表查詢

    從0到1學會MySQL單表查詢

    這篇文章主要給大家介紹了關(guān)于如何從0到1學會MySQL單表查詢的相關(guān)資料,單表查詢是指從一張表數(shù)據(jù)中查詢所需的數(shù)據(jù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • MySQL中UNION語句用法詳解與示例

    MySQL中UNION語句用法詳解與示例

    這篇文章主要給大家介紹了關(guān)于MySQL中UNION語句用法的相關(guān)資料,實際業(yè)務(wù)中有時候需要把滿足多種獨立條件的結(jié)果集整合到一起,就可以使用UNOIN聯(lián)合查詢,需要的朋友可以參考下
    2023-08-08
  • 阿里云服務(wù)器手動實現(xiàn)mysql雙機熱備的兩種方式

    阿里云服務(wù)器手動實現(xiàn)mysql雙機熱備的兩種方式

    阿里云服務(wù)器由于不支持keepalive虛擬ip,導致無法通過keepalive來實現(xiàn)mysql的雙機熱備。我們這里要實現(xiàn)阿里云的雙機熱備有兩種方式。感興趣的朋友跟隨小編一起看看吧
    2019-10-10
  • mysql 一次向表中插入多條數(shù)據(jù)實例講解

    mysql 一次向表中插入多條數(shù)據(jù)實例講解

    這篇文章主要介紹了mysql 一次向表中插入多條數(shù)據(jù)實例講解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • MySQL啟動報錯:Starting MySQL.. ERROR! The server quit without updating PID file的問題分析和解決

    MySQL啟動報錯:Starting MySQL.. ERROR! The se

    這篇文章給大家介紹了MySQL啟動報錯:Starting MySQL.. ERROR! The server quit without updating PID file的問題分析和解決辦法,文中給出了詳細的原因分析,需要的朋友可以參考下
    2023-12-12
  • Myeclipse 自動生成可持久化類的映射文件的方法

    Myeclipse 自動生成可持久化類的映射文件的方法

    這篇文章主要介紹了Myeclipse 自動生成可持久化類的映射文件的方法的相關(guān)資料,這里提供了詳細的實現(xiàn)步驟,需要的朋友可以參考下
    2016-11-11
  • MySQL中INSERT INTO的具體使用

    MySQL中INSERT INTO的具體使用

    INSERT INTO 是 MySQL 數(shù)據(jù)庫中非常重要的一種 SQL 命令,用于將新行插入到表中,本文主要介紹了MySQL中INSERT INTO的具體使用,感興趣的可以了解一下
    2024-03-03
  • MySQL導入.CSV數(shù)據(jù)中文亂碼的解決方式

    MySQL導入.CSV數(shù)據(jù)中文亂碼的解決方式

    當將xls或xlsx文件轉(zhuǎn)換為CSV并導入數(shù)據(jù)庫時,可能出現(xiàn)亂碼,原因是編碼格式不是UTF-8,解決方法是使用Notepad或記事本打開CSV文件,所以本文給大家介紹了MySQL導入.CSV數(shù)據(jù)中文亂碼的解決方式,需要的朋友可以參考下
    2024-08-08
  • MySQL深分頁,limit 100000,10優(yōu)化方式

    MySQL深分頁,limit 100000,10優(yōu)化方式

    MySQL中深分頁查詢因需掃描大量數(shù)據(jù)行導致效率低下,優(yōu)化方法包括子查詢優(yōu)化、延遲關(guān)聯(lián)、標簽記錄法和使用between...and...等,通過減少回表次數(shù)和范圍掃描提升查詢性能,覆蓋索引幫助減少搜索次數(shù),提升性能
    2024-10-10
  • mysql之連接超時wait_timeout問題及解決方案

    mysql之連接超時wait_timeout問題及解決方案

    這篇文章主要介紹了mysql之連接超時wait_timeout問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論