SELECT * FROM grda WHERE id IN (select id from (select DISTINCT id from grda order by id desc) where rownum <11)
解决方案 »
- 巨难sql问题求解
- ORA-12170 TNS:Connection timeout occurred 错误, 知道的进来解解
- 关于join的问题
- RedHat Linux 9.0 安装 oracle9i 出错 , display变量相关 .
- 请教:关于序号的问题
- oracle中间怎么写full join
- 这个SQL怎么改啊?在线等待!
- 哪里有oracle9i数据库可以下载????
- oracle的数据导入导出问题
- GoldenGate 抽取进程异常退出
- 请教:在oracle8.05中怎么限定检索出来的纪录数?
- (oracle)tnsping本地建立的net名,为什么在aix unix下不通,而在windows下却能通??
SELECT B.* FROM
GRDA B
INNER JOIN
(SELECT ID FROM
(SELECT DISTINCT ID, RANK() OVER (ORDER BY ID) AS RK FROM GRDA) A
WHERE RK <= 10) C
ON B.ID = C.ID
FROM grda
WHERE id IN (select id from (select DISTINCT id from grda order by id desc)
where rownum <11)
order by id desc
from
(
select * from grda
order by id desc)
where rownum<11;
没有看清楚lz的东西
更正如下SELECT * FROM CSDN.TABLE111
WHERE ROWNUM <= 5
ORDER BY ID DESC
智者留其名 多挂一天
"SELECT * FROM GRDA WHERE ROWNUM <= 你的数字 ORDER BY ID DESC" 呵呵 原来是先ORDER BY 后 WHERE 以为是先WHERE 后ORDER BY 呢 呵呵
不然我不会傻傻地去多嵌套一层。因为是先where rownum还是先order by并不是确定的,它与表的结构有关。
我曾经做过实验的,你order by不同的字段可能得到的查询结果就不同,但它也不是先取前多少条。与oracle的优化机制有点关系。所以楼主要得到想要的结果还是要写成我那个样子!http://community.csdn.net/Expert/topic/4284/4284355.xml?temp=.4171717
这是我去年提出来的问题,有些高手也作了相应的解释,但我还是有点疑惑的。
那我也补充一下
如果要包上一层的话
为什么不使用RANK?那个就绝对不会出现rownum的一些问题
今天突然想看看以前的帖子才看到二位的答案 的确如Reeezak(坚持信念) 所说 用RANK 和dense_rank 要好很多 再次感谢