select rownum,t.* from user_tables t; select rownum,t.* from(select * from user_tables order by table_name)t; select * from (select rownum,t.* from user_tables t order by table_name); 运行看看上面的代码会有什么不同 自己动手,会了解得比别人告诉你更深刻
做个这样的奇怪实验create table t1(id int, name varchar(10)); create index idx_t1_id on t1(id);insert into t1 values(1, 'Name1'); insert into t1 values(5, 'Name5'); insert into t1 values(4, 'Name4'); insert into t1 values(3, 'Name3'); insert into t1 values(2, 'Name1');select a.id, rownum from t1 a; select a.id, rownum from t1 a where rownum<6 order by a.id; select a.name, rownum from t1 a; select a.id, rownum from t1 a where rownum<6 order by a.name;有兴趣的试一下,结果和你推断的是一致的吗?
写个子查询,与插入表的顺序无关 select a.*,rownum from (select * from t1 order by id ) a
select rownum,t.* from(select * from user_tables order by table_name)t;
select * from (select rownum,t.* from user_tables t order by table_name);
运行看看上面的代码会有什么不同
自己动手,会了解得比别人告诉你更深刻
对于索引表: ROWNUM顺序与主键顺序一致.
对于标准表:ROWNUM顺序与记录的插入顺序或与SELECT语句生成的顺序一致,请教我这样的理解对否?
多谢啦。
对应标准表, 请教select语句(没有order by)是按什么顺序?
如果要按顺序排列,还是对结果集进行order by 比较好
create index idx_t1_id on t1(id);insert into t1 values(1, 'Name1');
insert into t1 values(5, 'Name5');
insert into t1 values(4, 'Name4');
insert into t1 values(3, 'Name3');
insert into t1 values(2, 'Name1');select a.id, rownum from t1 a;
select a.id, rownum from t1 a where rownum<6 order by a.id;
select a.name, rownum from t1 a;
select a.id, rownum from t1 a where rownum<6 order by a.name;有兴趣的试一下,结果和你推断的是一致的吗?
写个子查询,与插入表的顺序无关
select a.*,rownum from (select * from t1 order by id ) a