自定义sql_SQL自定义排序,想怎么排就怎么排
生活随笔
收集整理的這篇文章主要介紹了
自定义sql_SQL自定义排序,想怎么排就怎么排
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點擊關注上方“數據管道”,
設為“置頂或星標”,第一時間送達干貨
你有遇到過這樣的場景嗎?按指定的順序輸出結果,比如按“北京,天津,上海,重慶……”這樣的順序。今天給大家介紹幾種方法來求解這樣的問題,我們先看下示例表:這張表的數據是隨機錄進去的,下面我們希望按照我們指定的順序輸出為如下內容:注意:這里既沒有按照人口的多少排序,也沒有按照GDP的多少排序,更加沒有按照城市的拼音首字母排序,完全是按照我們自己的意愿進行排序。方法一??ORDER BY CASE WHEN通過在ORDER BY的時候,我們對想要的輸出順序使用CASE WHEN,將文本轉化為可排序的數字來進行間接排序,具體代碼如下: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此方法針對比較簡單的查詢容易實現自定義排序,在比較復雜場景中使用起來有限制。方法二?UNION ALL使用UNION ALL的方法容易理解,但是代碼會寫的比較復雜,具體如下: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我們通過增加一列自定義的Num,給查詢出來的每一行記錄賦一個值,這個值是我們輸出的順序,再通過子查詢對這個自定義的Num進行排序即可。時常用在比較復雜的查詢語句中,且需要自定義排序的場景下。方法三?創建臨時表相比上面兩種方法,創建臨時表的方法可以極大的減少代碼量。我們可以先創建一個按照我們希望輸出的順序的臨時表Temp,具體如下:當我們需要自定義排序輸出時,可以直接關聯該臨時表,具體代碼如下:SELECT?a.* FROM?Citys a
JOIN?Temp b ON?a.City=b.City
ORDER?BY?b.Num這種方法相對于上面兩種方法只需要更新臨時表中的順序即可,可以適應各種不同的場景。
總結
以上是生活随笔為你收集整理的自定义sql_SQL自定义排序,想怎么排就怎么排的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: keil3如何放大字体_keil3如何设
- 下一篇: mysql忘记密码可以卸载吗_mysql