自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊一聊SQL自定義排序

數(shù)據(jù)庫 其他數(shù)據(jù)庫
你有遇到過這樣的場景嗎?按指定的順序輸出結(jié)果,比如按“北京,天津,上海,重慶……”這樣的順序。

?

今天給大家介紹幾種方法來求解這樣的問題,我們先看下示例表:

圖片

這張表的數(shù)據(jù)是隨機(jī)錄進(jìn)去的,下面我們希望按照我們指定的順序輸出為如下內(nèi)容:

圖片

注意:這里既沒有按照人口的多少排序,也沒有按照GDP的多少排序,更加沒有按照城市的拼音首字母排序,完全是按照我們自己的意愿進(jìn)行排序。

方法一  ORDER BY CASE WHEN

通過在ORDER BY的時(shí)候,我們對想要的輸出順序使用CASE WHEN,將文本轉(zhuǎn)化為可排序的數(shù)字來進(jìn)行間接排序,具體代碼如下:

*  Citys

City=
City=
City=
City=
City=

此方法針對比較簡單的查詢?nèi)菀讓?shí)現(xiàn)自定義排序,在比較復(fù)雜場景中使用起來有限制。

方法二 UNION ALL

使用UNION ALL的方法容易理解,但是代碼會(huì)寫的比較復(fù)雜,具體如下:

a.City,a.Population,a.GDP 
(
,* Citys City=
ALL
,* Citys City=
ALL
,* Citys City=
ALL
,* Citys City=
ALL
,* Citys City=
) a
a.Num

我們通過增加一列自定義的Num,給查詢出來的每一行記錄賦一個(gè)值,這個(gè)值是我們輸出的順序,再通過子查詢對這個(gè)自定義的Num進(jìn)行排序即可。時(shí)常用在比較復(fù)雜的查詢語句中,且需要自定義排序的場景下。

方法三 創(chuàng)建臨時(shí)表

相比上面兩種方法,創(chuàng)建臨時(shí)表的方法可以極大的減少代碼量。我們可以先創(chuàng)建一個(gè)按照我們希望輸出的順序的臨時(shí)表Temp,具體如下:

圖片

當(dāng)我們需要自定義排序輸出時(shí),可以直接關(guān)聯(lián)該臨時(shí)表,具體代碼如下:

a.*  Citys a
Temp b a.City=b.City
b.Num

這種方法相對于上面兩種方法只需要更新臨時(shí)表中的順序即可,可以適應(yīng)各種不同的場景。?

責(zé)任編輯:武曉燕 來源: SQL數(shù)據(jù)庫開發(fā)
相關(guān)推薦

2021-03-29 00:02:10

C#Attribute元素

2020-10-15 06:56:51

MySQL排序

2022-06-27 07:50:16

鏈表節(jié)點(diǎn)測試

2021-01-28 22:31:33

分組密碼算法

2023-09-22 17:36:37

2020-05-22 08:16:07

PONGPONXG-PON

2020-03-31 10:08:15

零信任安全軟件

2018-06-07 13:17:12

契約測試單元測試API測試

2022-08-08 08:25:21

Javajar 文件

2023-07-06 13:56:14

微軟Skype

2021-08-04 09:32:05

Typescript 技巧Partial

2018-11-29 09:13:47

CPU中斷控制器

2019-02-13 14:15:59

Linux版本Fedora

2021-01-29 08:32:21

數(shù)據(jù)結(jié)構(gòu)數(shù)組

2021-02-06 08:34:49

函數(shù)memoize文檔

2023-05-15 08:38:58

模板方法模式

2022-11-01 08:46:20

責(zé)任鏈模式對象

2020-09-08 06:54:29

Java Gradle語言

2022-03-08 16:10:38

Redis事務(wù)機(jī)制

2022-03-29 09:56:21

游戲版本運(yùn)營
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號