1. 程式人生 > 其它 >自定義sql_SQL 進階:使用case when 表示式實現自定義排序

自定義sql_SQL 進階:使用case when 表示式實現自定義排序

技術標籤:自定義sql

我們經常使用order by 進行排序,如何1,2,3或者A,B,C。那麼如何讓資料按照自己的想法進行排序呢?下面我們以一個例子來說明吧。

原資料

2a83084f3995611d482a0b79d2371224.png

我們要實現資料按B,A,D,C的順序進行排序。

思路

使用case when 將A,B,C,D轉換為2,1,4,3,這樣在我們再使用order by實現資料的自定義重排。

程式碼如下:

#自定義排序B-A-D-C
select *
from test1
order by case key1
				when 'B' then 1
				when 'A' then 2
				when 'D' then 3
				when 'C' then 4 end 

實現的效果如下:

0a5e20861a366752d8f6b92807b6452f.png

這樣,我們就實現了自定義排序,感興趣的同學可以自己動手試一試。下面貼上整個實驗的程式碼塊

#建立測試表test1
create table test1
(	key1 varchar(4) not null,
	x int,
	y int,
	z int);

#插入練習資料
insert into test1 values('A',1,2,3);
insert into test1 values('B',5,5,2);
insert into test1 values('C',4,7,1);
insert into test1 values('D',3,3,8);

#自定義排序B-A-D-C
select *
from test1
order by case key1
				when 'B' then 1
				when 'A' then 2
				when 'D' then 3
				when 'C' then 4 end