2010-07-09 76 views
2

我得到了 'SQL錯誤:ORA-01733:虛擬列這裏不允許使用'SQL虛擬列

這裏是我的代碼:

update (
    Select g.FIRST300BB from ( 
     select FIRST300BB, row_number() over (order by pitchandeventid) r 
     from gamedata_me 
     where hitterid = 5000 
     and (eventcode = 'BB') 
    ) g 
    where r between 0 and 300 
) t 
set t.FIRST300BB =1 

什麼想法?我堅持使用Oracle所以我發現我不能做更新/從語法......所以我正式盤旋貨車

回答

6

嘗試例如

update gamedata_me 
    set first300BB=1 
where rowid in(
      Select g.rid from ( 
       select rowid rid, row_number() over (order by pitchandeventid) r 
        from gamedata_me 
       where hitterid = 5000 
       and (eventcode = 'BB') 
       ) g 
    where r between 0 and 300 
    ) 
+0

+1此更新的等效查詢做的伎倆。 – APC 2010-07-09 06:21:19