總之就是以前在 SQL Server 上面寫的方式不能用了 @@"
以前都是這樣寫的(印象中)...
update a
set a.co = nvl(b.co, 'not found')
from table_a a
left join table_b b on a.id = b.id
但是在 Oracle 不可以這樣寫,會有錯誤 ╮(╯3╰)╭
估狗了一下是說有兩種方式可以處理,
一個是用子查詢的方式,另一種是用 View 的方式,
子查詢遇到資料量大的時候效能會變成笑能,所以~~~OUT!!!
修改成 View 的結果如下:
update (
select nvl(b.co, 'not found') as b_co, a.co
from table_a a
left join table_b b on a.id = b.id
)
set co = b_co
其實也沒有比較麻煩,
只是把原來的 Select 用 Update 包起來而已。
參考:Einzig Mir: Oracle SQL使用兩個Table進行Update的方法
m.co,請問一下m是甚麼?
回覆刪除應該是 b.co 吧.....
刪除感謝分享... 我剛剛試了一下我的oracle 資料庫發現要用以下script才能:
回覆刪除update xxtest_a a set a.co = (select b.co from xxtest_b b where b.id = a.id)
分享給您