新聞中心
?

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)江城免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
今天給大家介紹幾種方法來(lái)求解這樣的問(wèn)題,我們先看下示例表:
這張表的數(shù)據(jù)是隨機(jī)錄進(jìn)去的,下面我們希望按照我們指定的順序輸出為如下內(nèi)容:
注意:這里既沒(méi)有按照人口的多少排序,也沒(méi)有按照GDP的多少排序,更加沒(méi)有按照城市的拼音首字母排序,完全是按照我們自己的意愿進(jìn)行排序。
方法一 ORDER BY CASE WHEN
通過(guò)在ORDER BY的時(shí)候,我們對(duì)想要的輸出順序使用CASE WHEN,將文本轉(zhuǎn)化為可排序的數(shù)字來(lái)進(jìn)行間接排序,具體代碼如下:
* Citys
City=
City=
City=
City=
City=
此方法針對(duì)比較簡(jiǎn)單的查詢?nèi)菀讓?shí)現(xiàn)自定義排序,在比較復(fù)雜場(chǎng)景中使用起來(lái)有限制。
方法二 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
我們通過(guò)增加一列自定義的Num,給查詢出來(lái)的每一行記錄賦一個(gè)值,這個(gè)值是我們輸出的順序,再通過(guò)子查詢對(duì)這個(gè)自定義的Num進(jìn)行排序即可。時(shí)常用在比較復(fù)雜的查詢語(yǔ)句中,且需要自定義排序的場(chǎng)景下。
方法三 創(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
這種方法相對(duì)于上面兩種方法只需要更新臨時(shí)表中的順序即可,可以適應(yīng)各種不同的場(chǎng)景。?
分享題目:聊一聊SQL自定義排序
鏈接URL:http://fisionsoft.com.cn/article/cdsidpg.html


咨詢
建站咨詢
