SQL自定義排序小技巧

2021-09-24 04:03:54 字數 1093 閱讀 5798

**

凡使用過excel的讀者,都知道excel有個自定義排序功能

那麼在sql中是否可以實現類似的自定義排序功能哪?

答案是肯定的,這裡,筆者使用的是case when 排序法。

實驗如下(測試環境為mysql):

要求:根據指定城市名稱排序:

#1.按照整個字段排序法:

(即按照城市名稱–name欄位預設排序)

select name as

城市名稱

from

world.city

where

countrycode = 'chn'

and name in ( 'shanghai', 'peking', 'chongqing' )

order by

name;

執行結果為:

#2.按照指定城市名稱(現要求排序:shanghai排第一,chongqing排第二,其他的預設排序)

select name as

城市名稱

from

world.city

where

countrycode = 'chn'

and name in ( 'shanghai', 'peking', 'chongqing' )

order by

case

when name = 'shanghai' then 1

when name = 'chongqing' then 2

else name

end;

執行結果如下:

此法妙處在於:可擴充套件,比如,case when 在特定的when或else後,可加上按照字段值的長度排序、like特定字元排序、正規表示式等指定的一種規則或混合規則的排序,以期實現排序的效果。

sql實現自定義排序

實際應用中sql提供的預設按某一欄位排序,asc desc並不滿足需要,需要根據使用者需求自定義的按照默寫順序排序,這裡提供乙個方法,適用於自定義型別不多的情況下,多了就得存欄位關聯表排序了吧。例子如下 select from select 3 as id,小明 as name from dual ...

SQL語句自定義排序

需求 從訂單表中查資料,並且按照status欄位1,3,4,2,排序 分析 按照orderby status方法,不管asc還是desc達不到目的。可以用case when函式,但是case when的可維護性是比較差的,客戶說按1,4,3,2排序,或者新增兩個5,6,就要調整case when的順...

Powershell 自定義物件小技巧

豆子之前在指令碼裡面自定義物件的時候一般是這麼考慮的,我需要建立乙個陣列,每次迴圈的時候把乙個自定義的物件放進去,對於這個自定義的物件的結構,我需要建立乙個雜湊表,然後轉換成自定義物件。這個思路是沒錯,不過具體寫的時候有些小技巧。比如說最近看的乙個小挑戰,其中需要把下面這個 list的值自定義乙個物...