select  col1,col2  from  (select  rownum rm,col1,col2,col3  from  table_1 order by col_name)  where rm>=20 and rm<=30;排序结果怎能是一样

解决方案 »

  1.   

    其实你可以用一个SQL语句进行对比确认,看看第一个查询是不是在第二个查询中:
    select coll from table_l where rownum>=20 and rownum<=30 and coll
    not in (select coll from (select coll from table_l where rownum>=20 and rownum<=30 ));
      

  2.   

    我想应该说来是一样的,,但是好像一般不只把rownum来作为一个取数据集的条件,
      

  3.   

    回复楼上的:问题的来源是这样的:
    我要在大量原有的SQL语句的基础上自动加上新的判断条件,但是糟糕的是原来的程序员太用了大量的形如:
    select * from (select * from table_1) A,select col1...from table_1)B wher ... 这样的语句,造成无法嵌套,如果再在外面加上条件SQL就会产生列名两义性错误。TMD。
    只好走偏锋用Rownum来解决,问题是解决了,但是心里总不踏实,担心,所以来求证一下高手,是否有隐患