当我们用条件in查询数据时,我们希望输出的结果集是按照条件in里面的值的顺序展示的时,比如:
--有如下表:
SQL> select * from ordertest t;
ID NAME
----- ----------------
a 甲
b 乙
c 丙
d 丁
--当我们 t.id in ('a','c','d','b') 时,我们希望输出的结果是按照 a、c、d、b排序的,但实际结果是:
SQL> select * from ordertest t where t.id in ('a','c','d','b');
ID NAME
----- ----------------
a 甲
b 乙
c 丙
d 丁
--为此可以使用order by decode,达到我们目的,如下:
SQL> select * from ordertest t where t.id in ('a','c','d','b') order by decode(t.id,'a',1,'c',2,'d',3,'b',4);
ID NAME
----- ----------------
a 甲
c 丙
d 丁
b 乙
2015年11月5日