oracle union 会自动排序,Oracle Union/Union all 的排序问题 | 学步园

Oracle 通过在索引列上使用UNION/UNION ALL来提高合并查询的效率(相对于OR,不在此具体阐述),UNION/UNION ALL排序时,无论有多少个被union的部分,都只有最后一行一个order by子句,且UNION/UNION ALL的order by子句只能通过列号来标示你要排序的字段,例如:

SELECT a.recID, a.eventLevel, a.srcIP, a.dstIP, a.eventTime, a.eventCount, a.srcPort, a.dstPort, a.autoProcessed,

b.popular, b.eventName, b.popularName, b.securityID,

d.deviceIP,d.deviceName

FROM NETIDS_EVENTLOG_HISTORY a, NETIDS_DEFINE_EVENTBASE b, SYSTEM_DEPLOY d

WHERE a.eventTypeID=b.eventTypeID AND a.DEV_GUID=d.DEV_GUID

--order by a.eventtime desc 在此处加order by子句是错误的!!

UNION ALL

SELECT a.recID, a.eventLevel, a.srcIP, a.dstIP, a.eventTime, a.eventCount, a.srcPort, a.dstPort, a.autoProcessed,

b.popular, b.eventName, b.popularName, b.securityID,

e.deviceIP, e.deviceName

FROM NETIDS_EVENTLOG a, NETIDS_DEFINE_EVENTBASE b, SYSTEM_DEPLOY e

WHERE a.eventTypeID=b.eventTypeID AND a.DEV_GUID=e.DEV_GUID

order by 5 desc

--要用a.eventtime排序,只能在最后一行使用order by,且使用a.eventtime的列号——5来标示排序的列

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值