问个ORACLE中SQL语句写法,取表第N条记录的问题

2024-12-05 13:55:25
推荐回答(3个)
回答(1):

学MSSQLSERVER正准备学oracle的表示,你A表里的ID是相同的.. where a.id = b.id 表内无聚集索引数据存放可能是堆存放无序的,将有可能取ID相同的时候排序数据取错了数据...你权且把A表ID换下..不让其相同试试.

---或则直接把 where a.id = b.id 去掉试试,反正就只有一列相同ID

回答(2):

不能对ROWNUM 使用>(大于或等于1 的数值)、>=(大于1 的数值)、=(大于1 的数值),否则无结果
这是因为:
1、ROWNUM 是伪列,必须要要有返回结果后,每条返回记录就会对应产生一个ROWNUM
数值;
2、返回结果记录的ROWNUM 是从1 开始排序的,因此第一条始终是1;
这样,当查询到第一条记录时,该记录的ROWNUM 为1,但条件要求ROWNUM>1,因此不
符合,继续查询下一条;因为前面没有符合要求的记录,因此下一条记录过来后,其
ROWNUM 还是为1,如此循环,就不会产生结果。上述查询可以通过子查询来替代:
select * from(select rownum no ,id,name from a) where no=2

回答(3):

rownum是从第一行开始查询的伪列,是返回的总行数,不能直接用rownum=2你可以通过子查询实现
select * from(select rownum no ,id,name from a) where no=2