我看到oracle中的select * from tab where ROWNUM < 10就类似于sql2000中的select top 10
但是我查到它是不怎么支持排序的。ORACLE: ROWNUM DOES NOT ORDER
Oracle 提供称之为 Rownum 的特性, 对于一个查询返回的每一个记录, ROWNUM 返回一个数字用来表示顺序. 该列表并不是排序的. SQL> select username,rownum from dba_users order by username;
USERNAME ROWNUM
-------------------------- ------
AURORA$ORB$UNAUTHENTICATED 6
CTXSYS 10
DBSNMP 4
MDSYS 9
OPS$ORACLE 5
ORDPLUGINS 8
ORDSYS 7
OUTLN 3
SYS 1
SYSTEM 2
TESTUSER 11 11 rows selected.
使用 ORDER BY 没有解决问题, 因为 Rownum 在记录排序之前已经应用. 下面是一个需要返回一个基本表前面三个记录的例子. select username,rownum from dba_users
where rownum < 4 order by username;
USERNAME ROWNUM
-------------------------- ------
OUTLN 3
SYS 1
SYSTEM 2 ------------
Tim Quinlan 请问比如我要实现排序(比如id)同时用rownum<10这个功能应该怎么写?
谢谢
但是我查到它是不怎么支持排序的。ORACLE: ROWNUM DOES NOT ORDER
Oracle 提供称之为 Rownum 的特性, 对于一个查询返回的每一个记录, ROWNUM 返回一个数字用来表示顺序. 该列表并不是排序的. SQL> select username,rownum from dba_users order by username;
USERNAME ROWNUM
-------------------------- ------
AURORA$ORB$UNAUTHENTICATED 6
CTXSYS 10
DBSNMP 4
MDSYS 9
OPS$ORACLE 5
ORDPLUGINS 8
ORDSYS 7
OUTLN 3
SYS 1
SYSTEM 2
TESTUSER 11 11 rows selected.
使用 ORDER BY 没有解决问题, 因为 Rownum 在记录排序之前已经应用. 下面是一个需要返回一个基本表前面三个记录的例子. select username,rownum from dba_users
where rownum < 4 order by username;
USERNAME ROWNUM
-------------------------- ------
OUTLN 3
SYS 1
SYSTEM 2 ------------
Tim Quinlan 请问比如我要实现排序(比如id)同时用rownum<10这个功能应该怎么写?
谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货