oracle中order by 2,关于oracle中ROWNUM和ORDER BY的问题(2)

本文通过三个示例展示了在SQL查询中如何使用行号(ROWNUM)进行数据筛选,强调了在子查询中使用ROWNUM的重要性,以及不正确使用ROWNUM可能导致的错误结果。内容包括对数据表tb_ag001的商品ID、名称和价格的排序及筛选操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL code16:29:53 scott@TUNGKONG> SELECT a.*,rownum FROM (SELECT good_id, good_nm, prc FROM tb_ag001 ORDER BY prc) a;

GOOD_I GOOD_NM PRC ROWNUM

------ ------------------------------ ---------- ----------

133337 阳光宝贝防晒修复套SPF-30 0 1

133424 旋覆透白绣花毛巾X1 0 2

133428 左旋C新纪润白霜(7ml) 0 3

133430 左旋C美白保湿精乳 0 4

133528 美白晶澈爽肤水 0 5

133530 左旋C燕窝初雪调养面膜 0 6

133628 左旋C-燕窝初雪调养面膜8g*2 0 7

133728 化妆包1个 0 8

133828 BICATO活菌酵母修护晚霜5g 0 9

138068 蓝牙耳机*1128TF卡*1 0 10

138069 超速读卡器*1 0 11

138073 内置128兆TF卡天然水晶手链*1 0 12

138074 内置128兆TF卡水晶手链 0 13

已选择13行。

已用时间: 00: 00: 00.00

16:30:06 scott@TUNGKONG> SELECT * FROM (SELECT a.*, ROWNUM rn FROM (SELECT good_id, good_nm, prc FROM tb_ag001 ORDER BY prc) a) WHERE rn < 9;

GOOD_I GOOD_NM PRC RN

------ ------------------------------ ---------- ----------

133337 阳光宝贝防晒修复套SPF-30 0 1

133424 旋覆透白绣花毛巾X1 0 2

133428 左旋C新纪润白霜(7ml) 0 3

133430 左旋C美白保湿精乳 0 4

133528 美白晶澈爽肤水 0 5

133530 左旋C燕窝初雪调养面膜 0 6

133628 左旋C-燕窝初雪调养面膜8g*2 0 7

133728 化妆包1个 0 8

已选择8行。 -----------------这是正确的结果,因为后面的过滤条件用的是rn < 9。

已用时间: 00: 00: 00.01

16:30:21 scott@TUNGKONG> SELECT * FROM (SELECT good_id, good_nm, prc FROM tb_ag001 ORDER BY prc) WHERE ROWNUM < 9;

GOOD_I GOOD_NM PRC

------ ------------------------------ ----------

133337 阳光宝贝防晒修复套SPF-30 0

133424 旋覆透白绣花毛巾X1 0

133428 左旋C新纪润白霜(7ml) 0

133430 左旋C美白保湿精乳 0

133528 美白晶澈爽肤水 0

133530 左旋C燕窝初雪调养面膜 0

138074 内置128兆TF卡水晶手链 0

133728 化妆包1个 0

已选择8行。 --------这是错误的结果。区别在于133628和138074这两条记录。

已用时间: 00: 00: 00.01

16:30:46 scott@TUNGKONG> SELECT rownum,a.* from tb_ag001 a order by prc;

ROWNUM GOOD_I GOOD_NM PRC

---------- ------ ------------------------------ ----------

1 133337 阳光宝贝防晒修复套SPF-30 0

2 133424 旋覆透白绣花毛巾X1 0

3 133428 左旋C新纪润白霜(7ml) 0

4 133430 左旋C美白保湿精乳 0

5 133528 美白晶澈爽肤水 0

6 133530 左旋C燕窝初雪调养面膜 0

13 133628 左旋C-燕窝初雪调养面膜8g*2 0 --------------

8 133728 化妆包1个 0

9 133828 BICATO活菌酵母修护晚霜5g 0

10 138068 蓝牙耳机*1128TF卡*1 0

11 138069 超速读卡器*1 0

12 138073 内置128兆TF卡天然水晶手链*1 0

7 138074 内置128兆TF卡水晶手链 0 --------------

已选择13行。

已用时间: 00: 00: 00.03

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值