我有一张表,我想更新20-30的数据,我的语句如下:update 表名
     set 字段='成都' 
where rownum in 
    (SELECT ROWNUM RN 
    FROM (SELECT * FROM 表名 where 字段='四川')  
    )
    and rownum  BETWEEN 10 AND 20结果发现只能更新一条,请问这应该怎么写啊!

解决方案 »

  1.   


    SELECT ROWNUM RN 
        FROM (select * from emp where deptno='20')这个查出来是多少行啊
      

  2.   

    最内层的sql应该有排序吧,没排序更新的好像没意义
    update 表名
         set 字段='成都' 
    where rowid in 
        (SELECT rowid
        FROM (SELECT ROWNUM,表名.* FROM 表名 where 字段='四川') 
        WHERE rownum BETWEEN 10 AND 20 
        )
      

  3.   


    SELECT ROWNUM RN 
        FROM (SELECT * FROM 表名 where 字段='四川')
    我这个查询出来有30多条
      

  4.   

    rownum是一个序列,要包含rownum=1的这一行,还有rownum要加上order by ,否则rownum不准确
      

  5.   

    为什么我的语句只能更新一条数据啊!我改成这样了都不行:update 表名
    set 字段='成都'
    where rownum in
    (SELECT ROWNUM RN
    FROM (SELECT * FROM 表名 where 字段='四川') where RN<11
    )
    ============
    想一次性更新11条
      

  6.   

    我实现了,错误在于不能用rownum作为条件,应该用表里面的某个字段作为条件,如下:update 表名
    set 字段='成都'
    where 字段名 in
    (SELECT 字段名 
    FROM (SELECT 字段名 FROM 表名 where 字段='四川') where rownum<11
    )
      

  7.   


    update 表名
    set 字段='成都'
    where 字段名 in
    (SELECT 字段名 FROM 表名 where 字段='四川' and rownum<11)