请教Oracle排序问题

heyingss 2013-06-20 04:47:39
在查询中,想讲符合某条件的某行数据始终显示在最后,而且不希望它参与前面数据的排序。
请问如何写这样的SQL语句?
...全文
147 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
heyingss 2013-06-26
8楼正解!感谢!
回复
多壮志 2013-06-26
oracle的order by 足够灵活 就这么个意思: order by case when xh=371 then null else sj end nulls last,sj -- 或者不需要nulls last,也可以故意把sj设置一个升序中的绝对大的值(如果是升序排序)
回复
heyingss 2013-06-26
1 2013-6-24 1 2 2013-6-24 2 3 2013-6-24 6 4 2013-6-24 364 5 2013-6-24 394 6 2013-6-24 4481 7 2013-6-25 1 8 2013-6-25 2 9 2013-6-25 6 10 2013-6-25 364 11 2013-6-25 394 12 2013-6-25 4481 13 2013-6-24 371 14 2013-6-25 371 用union连接后是如上结果的,但希望371这个特殊数据,分别排在6-24和6-25最后。
回复
adaizi1980 2013-06-25
--先认为设置个排序号,再排序 select dataCol,serialno,... from (select 1 as serialno, dataCol,table.* from table where ... and not (特殊条件) union select 2 as serialno, dataCol,table.* from table where 特殊条件 ) xxx order by dataCol,serialno asc (如果有其他排序字段,加到这后边)
回复
zhouhao189 2013-06-25
select * from tablename where id not like '%%' union select * from tablename where id like '%%'
回复
heyingss 2013-06-25
用union all连接该数据是排在最后了。可是要查询好几天数据,有关它的全部在最后。要求它在每天的数据的最后一行。也就是时间还是要排序的。真晕?!请教写法?
回复
e251396 2013-06-20
那就用union关键字吧。两个集合拼起来,但要注意的是第二个要排序的结果集要排除第一个结果集的记录。
回复
wushangjimo 2013-06-20
那就拼接吧,应该能符合要求,如
select * from tablename where id != 'aa' order by id 
union select * from tablename where id = 'aa'
回复
shixitong 2013-06-20
1、加个排序号,把这列的排序号设置为最低,比如-1,那么它总是排最后 2、直接在程序里处理
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-06-20 04:47
社区公告
暂无公告