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)
上面的不對,用下麵的試試.update from (select * from table1 where rownum<=2 order by rownum desc) set flag =0 where rownum=1
修改一下update table1 set flag =0 from (select * from table1 where rownum<=2 order by rownum desc) where rownum=1
啊?这不是很简单吗,既然都一样的话任意修改一条就可以了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)
楼上的兄弟用什么数据库的 可以 update from 楼主为什么会出现这种数据需要处理 考虑表重新设计吧
嘿嘿,那位兄弟用的是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)
set t.flag = 0
where t.rowid =
(select n.rowid from tab_name n
where n.userid = '001'
and n.rownum = 2)
set flag =0
where rownum=1
set flag =0
from (select * from table1 where rownum<=2 order by rownum desc)
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)
rownum是对查询结果进行编号的
所以没有1就不会有2,不能这么用
可以 update from
楼主为什么会出现这种数据需要处理
考虑表重新设计吧
update test_b set flag=0
where rowid =(select c from (select rowid c,rownum a from test_b ) where a=2)