一个排序问题,请教

deadncut 2005-10-11 04:15:51
我要检索3个字段,按照1,2,3 进行排序,但是,3字段有null的值,我需要把3字段是null的数据在最前面表示。不用union 的话,能不能一句话高定呢?因为原来的sql已经很长了!
据个例子说明白;
字段1 字段2 字段3
21 22 null
21 23 null
22 33 null
10 1 3
10 2 4
. . .
就是这个效果了,谢谢达人指点!
...全文
126 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SInoyew 2005-10-11
  • 打赏
  • 举报
回复
不错!
wfeng7907 2005-10-11
  • 打赏
  • 举报
回复
如果是对col1,col3排序
select col1,col2,col3 from table order by col1,nvl(col3,0);
按排序数据加入就可以了!
deadncut 2005-10-11
  • 打赏
  • 举报
回复
wfeng7907(无风) ,你好。
呵呵,这个方法是不错,可惜有个问题。就是和我检索的顺序相关,比如说是4个字段,我必须按照
1,2,3,4的顺序select, 排序的时候,用3,4,4有可能会是null,剩下的问题同原题,还有可能么?因为的sql的select顺序,影响我程序操作文件输出的顺序。所以,才多次一问,继续求教,谢谢!
沝林 2005-10-11
  • 打赏
  • 举报
回复
在order by的字段后加上nulls first 或nulls last就可以了

select col1,col2,col3 from table order by col3 nulls first,col2,col1
bobfang 2005-10-11
  • 打赏
  • 举报
回复
如果你的意思是字段3为空的必须排在最前面(也要按照字段1、字段2排序),不空的按照字段1、字段2、字段3的次序排,可以这样写
select ...
from ...
order by decode(字段3,null,0,1),字段1,字段2,字段3
sasacat 2005-10-11
  • 打赏
  • 举报
回复
我觉着是没办法了,咬咬牙用UNION吧
wfeng7907 2005-10-11
  • 打赏
  • 举报
回复
select col1,col2,col3 from table order by nvl(col3,0);

17,380

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧