select * from (select t.*,rownum id,rowid rid from table1 t where rownum <= 3) where id >=1;
id rid
1 AAANIBAAIAAAMa1AAA
2 AAANIBAAIAAAMa1AAB
3 AAANIBAAIAAAMa1AAC
select rid from (select t.*,rownum id,rowid rid from table1 where rownum <= 3) where id >=1;
rid
AAANIBAAIAAAMa1AAQ
AAANIBAAIAAAMa1AAR
AAANIBAAIAAAMa1AAS请问:
1.为什么同样的数据搜索出来的rid值不同呢?
2.要怎么以第二种查询方法查到第一种的结果?就是指定字段的查询。
id rid
1 AAANIBAAIAAAMa1AAA
2 AAANIBAAIAAAMa1AAB
3 AAANIBAAIAAAMa1AAC
select rid from (select t.*,rownum id,rowid rid from table1 where rownum <= 3) where id >=1;
rid
AAANIBAAIAAAMa1AAQ
AAANIBAAIAAAMa1AAR
AAANIBAAIAAAMa1AAS请问:
1.为什么同样的数据搜索出来的rid值不同呢?
2.要怎么以第二种查询方法查到第一种的结果?就是指定字段的查询。
把这句改成这样
select * from (select t.*,rownum id,rowid rid from table1 t order by rowid)where rownum <= 3我的理解是因为select * from table where rownum<=3因为这个结果可能会变的加一个排序条件试试
select a,b,c,rid
from
(select a,b,c,rowid rid,rownum rn from table
order by rowid)
where rn>=1 and rn<=3
排序的区间应该用rownum,而不是rowid,rowid是物理地址,是数据不变的伪列。而rownum是序号的伪列。
用rowid做唯一标识,所以才用rowid