自定义sql_SQL自定义排序,想怎么排就怎么排
生活随笔
收集整理的這篇文章主要介紹了
自定义sql_SQL自定义排序,想怎么排就怎么排
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
點(diǎn)擊關(guān)注上方“數(shù)據(jù)管道”,
設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨
你有遇到過(guò)這樣的場(chǎng)景嗎?按指定的順序輸出結(jié)果,比如按“北京,天津,上海,重慶……”這樣的順序。今天給大家介紹幾種方法來(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)行間接排序,具體代碼如下:SELECT?* FROM?CitysORDER?BY?
CASE?WHEN?City='北京'?THEN?1??????
?????WHEN?City='天津'?THEN?2
?????WHEN?City='上海'?THEN?3
?????WHEN?City='重慶'?THEN?4
?????WHEN?City='廣州'?THEN?5
END此方法針對(duì)比較簡(jiǎn)單的查詢(xún)?nèi)菀讓?shí)現(xiàn)自定義排序,在比較復(fù)雜場(chǎng)景中使用起來(lái)有限制。方法二?UNION ALL使用UNION ALL的方法容易理解,但是代碼會(huì)寫(xiě)的比較復(fù)雜,具體如下:SELECT?a.City,a.Population,a.GDP FROM
(
SELECT?1?Num,* FROM?Citys WHERE?City='北京'
UNION?ALL
SELECT?2?Num,* FROM?Citys WHERE?City='天津'
UNION?ALL
SELECT?3?Num,* FROM?Citys WHERE?City='上海'
UNION?ALL
SELECT?4?Num,* FROM?Citys WHERE?City='重慶'
UNION?ALL
SELECT?5?Num,* FROM?Citys WHERE?City='廣州'
) a
ORDER?BY?a.Num我們通過(guò)增加一列自定義的Num,給查詢(xún)出來(lái)的每一行記錄賦一個(gè)值,這個(gè)值是我們輸出的順序,再通過(guò)子查詢(xún)對(duì)這個(gè)自定義的Num進(jìn)行排序即可。時(shí)常用在比較復(fù)雜的查詢(xún)語(yǔ)句中,且需要自定義排序的場(chǎng)景下。方法三?創(chuàng)建臨時(shí)表相比上面兩種方法,創(chuàng)建臨時(shí)表的方法可以極大的減少代碼量。我們可以先創(chuàng)建一個(gè)按照我們希望輸出的順序的臨時(shí)表Temp,具體如下:當(dāng)我們需要自定義排序輸出時(shí),可以直接關(guān)聯(lián)該臨時(shí)表,具體代碼如下:SELECT?a.* FROM?Citys a
JOIN?Temp b ON?a.City=b.City
ORDER?BY?b.Num這種方法相對(duì)于上面兩種方法只需要更新臨時(shí)表中的順序即可,可以適應(yīng)各種不同的場(chǎng)景。
總結(jié)
以上是生活随笔為你收集整理的自定义sql_SQL自定义排序,想怎么排就怎么排的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: keil3如何放大字体_keil3如何设
- 下一篇: mysql忘记密码可以卸载吗_mysql