问一个sql排序问题,有空的进来看看
有组数据,分别为id=4,id=5,id=3,怎样实现排序 4,5,3,就是id=4的排在id=5的前面,id =5的排在 id = 3的前面
...全文
请发表友善的回复…
发表回复
shuiniu0410 2012-11-02
- 打赏
- 举报
select * from tablename order by decode(id, 4, a, 5, b, 3, c, id) asc 只要abc是按升序排列的数字就可以实现,要是还有其他的id会按与abc的大小排列ssqtjffcu 2012-10-31
- 打赏
- 举报
with t as(
select 5 id from dual
union all
select 4 from dual
union all
select 3 from dual
)select * from t order by decode(id,4,3,5,4,3,5,id);
ID
----------
4
5
3
select 5 id from dual
union all
select 4 from dual
union all
select 3 from dual
)select * from t order by decode(id,4,3,5,4,3,5,id);
ID
----------
4
5
3
supremeSi 2012-10-31
- 打赏
- 举报
decode函数 和case……when……end都能满足你的要求,前提是你的需要排序的ID的数量是有限的可以列举的。
andyguan01_2 2012-10-30
- 打赏
- 举报
用 order by decode(id, 4, 1, 5, 2, 3, 3, id) asc
forgetsam 2012-10-30
- 打赏
- 举报
order by decode(字段,3,99999999999,字段)
规则很多就translate
规则很多就translate
大明湖畔_帅锅 2012-10-30
- 打赏
- 举报
另加一组字符 或者 union all合并
小海葵1 2012-10-30
- 打赏
- 举报
WITH TEST AS (
SELECT 4 AS ID FROM DUAL
UNION ALL
SELECT 5 AS ID FROM DUAL
UNION ALL
SELECT 3 AS ID FROM DUAL
)
SELECT * FROM TEST ORDER BY MOD(ID,4)
SELECT 4 AS ID FROM DUAL
UNION ALL
SELECT 5 AS ID FROM DUAL
UNION ALL
SELECT 3 AS ID FROM DUAL
)
SELECT * FROM TEST ORDER BY MOD(ID,4)
胖虎gogogo 2012-10-30
- 打赏
- 举报
order by case when id =4 then 1 when id = 5 then 2 when id =3 then 3 end
alingfreedom 2012-10-30
- 打赏
- 举报
[Quote=引用 2 楼 的回复:]
order by decode(字段,3,99999999999,字段)
规则很多就translate
[/Quote]
decode ,translate在mysql有这样的函数吗
order by decode(字段,3,99999999999,字段)
规则很多就translate
[/Quote]
decode ,translate在mysql有这样的函数吗