oracle里面用什么方法 更新指定的行数,如第10行到20,或者更新不连续的行数 第8行和第10行
我是初来咋到的实习生,请大家多多指教谢谢!

解决方案 »

  1.   

    一般不会根据指定的行数来更新,而是根据关键字段值条件来更新。
    如果确要这样做,你可以给出样例表和数据SQL脚本。
      

  2.   

    好像,删除指定的行数没什么意义啊,还是需要根据特点的业务来,确定要删除什么样的数据。最好是根据主键来。删除指定行数的话,直接用delete from table where rownum>20 这样的就可以了。
      

  3.   

    可以先通过select获取rowid,然后通过rowid更新你想更新的数据。
    update tablea t set t.col1='123' where 
    t.rowid in (select rowid from (select rownum from tablea s order by s.col2));
      

  4.   

    update tablea t set t.col1='123' where  
    t.rowid in (select rowid from (select rownum rn from tablea s order by s.col2) where rn between 20 and 40);
      

  5.   


    这个真的有用?明天试一下。好像记得rownum只能用小于号 <
      

  6.   

    刚才在线申请了个oracle的网上在线试用版测试了一下,应该是不行的.只能用小于号。要么就加括号变成子查询create table a (a int)insert into a values(1)
    insert into a values(1)
    insert into a values(1)
    insert into a values(1)
    select * from a where rownum>3
    未找到任何数据 
    delete from a where rownum>3
    已删除 0 行。select * from a where rownum<4
    .02 秒后返回了 3 行
      

  7.   


    对不起啊,考虑不周,谢谢楼主的提醒。
    在select中,只有 rownum条件为"<"或"<="时有结果返回,而其余条件如">","=",">="都不能返回结果(除了=1和>0的情况)
    要显示结果集中的6到10行,可以用如下sql:
    select rn, empno,ename from (select rownum rn,empno,ename from emp where rownum<=10) where rn>5;
            RN EMPNO ENAME
    ---------- ----- ----------
             6  7698 BLAKE
             7  7782 CLARK
             8  7788 SCOTT
             9  7839 KING
            10  7844 TURNER引用来源:http://www.itpub.net/thread-424612-1-1.html
      

  8.   

    这只是查询的语句。以下是删除与更新,这些语句已经验证:删除:
    delete from emp where empno||ename in 
       (select empno||ename from 
           (select empno,ename,rownum rn from emp where rownum<10) 
                where rn>5);更新:update emp set ename='test' where empno||ename in 
       (select empno||ename from 
           (select empno,ename,rownum rn from emp where rownum<4) 
                where rn>1);以上是指定行的删除与更新。