有一表,3字段,数据有3条,且完全一致。如:
userid     username    flag
001         张三       1001         张三       1001         张三       1
要求修改第二条数据的flag的值为0各位大打,如何实现啊?可以使用多条SQL??

解决方案 »

  1.   

    update table1 set flag =0 where rownum=2
      

  2.   

    update tab_name t
    set t.flag = 0
    where t.rowid =
    (select n.rowid from tab_name n
      where n.userid = '001'
        and n.rownum = 2)
      

  3.   

    上面的不對,用下麵的試試.update from (select * from  table1 where rownum<=2  order by rownum desc) 
    set  flag =0
    where rownum=1
      

  4.   

    修改一下update table1 
    set  flag =0
    from (select * from  table1 where rownum<=2  order by rownum desc) 
    where rownum=1
      

  5.   

    啊?这不是很简单吗,既然都一样的话任意修改一条就可以了update test_b set flag=0 where rownum=1
    --要么你一定要改第二条,可以这样
     update test_b set flag=0 where rowid in (select c from (select rowid c,row_number() over (order by user_id) as a from test_b   )  where a=2)
      

  6.   

    汗,楼上那两,用where rownum=2是不可能查出结果的
    rownum是对查询结果进行编号的
    所以没有1就不会有2,不能这么用
      

  7.   

    楼上的兄弟用什么数据库的
    可以 update from
    楼主为什么会出现这种数据需要处理
    考虑表重新设计吧
      

  8.   

    嘿嘿,那位兄弟用的是sqlserver,而且那个rownum=1的话前面那个select字句就完全是废话了。oracle里的写法应该改成我上面的写法,也可以稍微修改一下
     update test_b set flag=0 
       where rowid =(select c from (select rowid c,rownum a from test_b   )  where a=2)