- 數據庫庫表 (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 )