數據庫自定義排序

  • 數據庫庫表 (user)結構如下

id      name

01     王

02     張

03     趙

04     李

先要求查詢結果按張、王、李、趙進行排序

db2和oracle可以使用decode,語句如下

select id,name,decode(name,'張','1','王','2','李','3','趙','4') as dataorder from user order by dataorder;

mysql中則可以用if,語句如下

select  id,name,if(name='張',1,if(name='王',2,if(name='李',3,if(name='趙',4,-1)))) as dataorder from user order by dataorder;

也可將decode和if寫在order by後,語句如下

db2和oracle

select id,name from myuser order by decode(name,'張','1','王','2','李','3','趙','4');

mysql

select  id,name from user order by if(name='張',1,if(name='王',2,if(name='李',3,if(name='趙',4,-1))));

此方法僅適用於記錄較少,且明確知道排序規則

  • 另外一種情況,兩張表通過name關聯,根據另外一張表的排序規則進行當前表的排序,數據庫表(user和userorder)表結構如下

user表                                   userorder表

id      name                            userid           dataorder

01     王                                  02                  1

02     張                                  01                   2

03     趙                                  04                   3

04     李                                  03                   4

語句如下

select id,name from user order by (select dataorder from userorder where userorder.userid=id )




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章