oracle union 查询,Oracle UNION ALL在查询中保留记录的顺序

我有下面的场景(下表),我想根据它们是否为NULL来选择'X'或'Y'。Oracle UNION ALL在查询中保留记录的顺序

X Y pick

null not null Y

not null not null X

not null null X

包含数据的 'X' 和 'Y' 或UNION行ALLed象下面这样:

select 'X' as a

union all

select 'Y' as a

所以,我想,得到了下面的SQL,但不知道的“ROWNUM < = 1 “部分。如果UNION ALL保留 我查询两行的顺序,这将起作用(对于X和Y都不为空的情况)。

select a from

(

select 'X' as a

union all

select 'Y' as a

) where a is not null and rownum<=1;

select a from

(

select null as a

union all

select 'Y' as a

) where a is not null and rownum<=1;

select a from

(

select 'X' as a

union all

select null as a

) where a is not null and rownum<=1;

是上述正确的方式去做这件事吗?任何有识之士将不胜感激

2011-08-01

komedit1

+1

“UNION”或“UNION ALL”的结果是一个集合。集*没有*订单。即使你在简单的测试中观察到明显的顺序,你也不应该依赖这样的命令。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值