偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

聊一聊SQL自定義排序

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

?

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

圖片

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

圖片

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

方法一  ORDER BY CASE WHEN

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

*  Citys

City=
City=
City=
City=
City=

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

方法二 UNION ALL

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

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

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

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

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

圖片

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

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

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

責任編輯:武曉燕 來源: 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é)點測試

2023-09-22 17:36:37

2020-05-22 08:16:07

PONGPONXG-PON

2021-01-28 22:31:33

分組密碼算法

2020-03-31 10:08:15

零信任安全軟件

2018-06-07 13:17:12

契約測試單元測試API測試

2023-07-06 13:56:14

微軟Skype

2022-11-01 08:46:20

責任鏈模式對象

2022-08-08 08:25:21

Javajar 文件

2021-02-06 08:34:49

函數(shù)memoize文檔

2023-05-15 08:38:58

模板方法模式

2021-01-29 08:32:21

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

2019-02-13 14:15:59

Linux版本Fedora

2021-08-04 09:32:05

Typescript 技巧Partial

2018-11-29 09:13:47

CPU中斷控制器

2021-01-01 09:01:05

前端組件化設(shè)計

2020-08-12 08:34:16

開發(fā)安全We

2022-10-08 11:33:56

邊緣計算云計算
點贊
收藏

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