与物理顺序一样吗?

解决方案 »

  1.   

    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);
    运行看看上面的代码会有什么不同
    自己动手,会了解得比别人告诉你更深刻
      

  2.   

    如果没有任何排序的子句的话,ROWNUM所返回的结果集是以插入的顺序返回的。并且,与ROWNUM在同一层的ORDER BY子句对返回的ROWNUM编号是没有影响的。
      

  3.   

    我刚自己测试了一下:
    对于索引表: ROWNUM顺序与主键顺序一致.
    对于标准表:ROWNUM顺序与记录的插入顺序或与SELECT语句生成的顺序一致,请教我这样的理解对否?
      

  4.   

    rownum只和最终输出结果order by之前的顺序一致
      

  5.   


    多谢啦。
     
    对应标准表, 请教select语句(没有order by)是按什么顺序?
      

  6.   

    标准表的select语句顺序, 是按记录的插入顺序吗?
      

  7.   

    一般是这样,但是不绝对
    如果要按顺序排列,还是对结果集进行order by 比较好
      

  8.   

    select语句顺序与记录的插入顺序没有任何关系,这涉及到数据的存储了
      

  9.   

    做个这样的奇怪实验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;有兴趣的试一下,结果和你推断的是一致的吗?
      

  10.   


    写个子查询,与插入表的顺序无关
    select a.*,rownum from (select * from  t1 order by id ) a