oracle日期排序语句,oracle先排序再分页

Oracle排序分页查询和MySQL数据库的语句还不一样,这里做简单的记录。

按操作时间排序1

SELECT A.*, ROWNUM RN FROM (SELECT * FROM v_log) A ORDER BY operatetime DESC

结果

bVboPmS?w=1084&h=443

可以发现,按时间排序了,但是rownum并不是从小到大,因为oracle是先生成rownum,再进行排序,需要在套一层查询

按操作时间排序2

SELECT T.*, rownum RN FROM(

SELECT * FROM (SELECT * FROM v_log) ORDER BY operatetime DESC

) T

结果:

bVboPnb?w=1063&h=191

顺序正确,rownum正确,在此基础上再套一层查询进行分页

按操作时间排序并分页

SELECT T2.* from(

SELECT T.*, rownum RN FROM(

SELECT * FROM (SELECT * FROM v_log) ORDER BY operatetime DESC

)T) T2 WHERE RN BETWEEN 1 and 10

bVboPnu?w=893&h=191

测试

SELECT * FROM (

SELECT A."sku", ROWNUM rn, A."goods_sn"

FROM AMZ_HUOPIN_SKU A

WHERE ROWNUM <= 10 ORDER BY A."goods_sn" DESC) temp

WHERE temp.rn > 0;

SELECT A."sku", A."goods_sn", ROWNUM RN FROM AMZ_HUOPIN_SKU A ORDER BY A."sku" DESC

## 子查询先找出所有,然后再rownum,rownum 为伪列,后再排序

SELECT A."sku", A."goods_sn", ROWNUM RN FROM (SELECT * FROM AMZ_HUOPIN_SKU) A ORDER BY A."sku" DESC

## 因为oracle是先生成rownum,再进行排序,需要在套一层查询,即先拍好序,然后再生成rownum

SELECT T."sku", T."goods_sn", ROWNUM RN FROM (SELECT * FROM (SELECT * FROM AMZ_HUOPIN_SKU) ORDER BY "sku" DESC

) T

## 上边的这两个语句是等价的

SELECT T."sku", T."goods_sn", ROWNUM RN FROM (SELECT * FROM AMZ_HUOPIN_SKU ORDER BY "sku" DESC

) T

SELECT T2.* FROM(

SELECT T."sku", T."goods_sn", ROWNUM RN FROM (SELECT * FROM AMZ_HUOPIN_SKU ORDER BY "sku" DESC

) T) T2 WHERE RN BETWEEN 0 AND 10

综合查询

# 1、子句查询,这条语句可以加条件WHERE

SELECT * FROM (SELECT A."sku", A."goods_sn", A."category",A."color_name", A."size_name", A."fnsku",H.QTY,H.WAREHOUSEID,H.F_CREATE_TIME FROM AMZ_HUOPIN_SKU A

LEFT JOIN HWC_CAMEL_INV_ALL H ON A."fnsku" = H.SKU)

# 2、排序

SELECT * FROM (SELECT * FROM (SELECT A."sku", A."goods_sn", A."category",A."color_name", A."size_name", A."fnsku",H.QTY,H.WAREHOUSEID,H.F_CREATE_TIME FROM AMZ_HUOPIN_SKU A

LEFT JOIN HWC_CAMEL_INV_ALL H ON A."fnsku" = H.SKU)) ORDER BY "goods_sn" DESC

# 3、排序之后,再获取ROWNUM

SELECT T.*, ROWNUM RN FROM (SELECT * FROM (SELECT * FROM (SELECT A."sku", A."goods_sn", A."category",A."color_name", A."size_name", A."fnsku",H.QTY,H.WAREHOUSEID,H.F_CREATE_TIME FROM AMZ_HUOPIN_SKU A

LEFT JOIN HWC_CAMEL_INV_ALL H ON A."fnsku" = H.SKU)) ORDER BY "goods_sn" DESC) T

# 4、再根据获取到的ROWNUM按照顺序进行分页

SELECT R.* FROM(

SELECT T.*, ROWNUM RN FROM (SELECT * FROM (SELECT * FROM (SELECT A."sku", A."goods_sn", A."category",A."color_name", A."size_name", A."fnsku",H.QTY,H.WAREHOUSEID,H.F_CREATE_TIME FROM AMZ_HUOPIN_SKU A

LEFT JOIN HWC_CAMEL_INV_ALL H ON A."fnsku" = H.SKU WHERE A."goods_sn" = 'K832026565')) ORDER BY "goods_sn" DESC) T

) R WHERE RN BETWEEN 10 AND 20

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值