update tb_log set userid = row.userid where userid = 0 and rowid = (select rd from (select rowid rd, rownum rn from tb_log) where rn = i)
可以用一条merge语句来完成所有功能,例如 MERGE /*+rowid(a)*/ INTO tb_log a USING (SELECT x.*, y.rid FROM (SELECT nickname, userid, username, ROWNUM r FROM tb_account WHERE nickname IS NOT NULL) x, (SELECT l.rowid rid, ROWNUM r FROM tb_log l WHERE userid = 0) y WHERE x.r = y.r) b ON (b.rid = a.rowid) WHEN MATCHED THEN UPDATE SET a.userid = b.userid
update tb_log
set userid = row.userid
where userid = 0
and rowid = (select rd
from (select rowid rd, rownum rn from tb_log)
where rn = i)
MERGE /*+rowid(a)*/
INTO tb_log a
USING (SELECT x.*, y.rid
FROM (SELECT nickname, userid, username, ROWNUM r FROM tb_account WHERE nickname IS NOT NULL) x,
(SELECT l.rowid rid, ROWNUM r FROM tb_log l WHERE userid = 0) y
WHERE x.r = y.r) b
ON (b.rid = a.rowid)
WHEN MATCHED THEN
UPDATE SET a.userid = b.userid