- 数据库库表 (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 )