oracle庫中,關聯其他表進行更新時,使用如下語句會出現一個問題。
UPDATE student a SET a.name = (
SELECT b.name FROM student_copy b WHERE b.id = a.id
)
執行完會發現,a表中未與b表對應上的記錄,name字段值均變爲null了。我們想要達到的效果是隻有a表的id與b表的id能關聯時,才執行更新操作,解決此問題需要在後面加上where條件:
UPDATE student a SET a.name = (
SELECT b.name FROM student_copy b WHERE b.id = a.id
)
WHERE EXISTS ( SELECT 1 FROM student b WHERE b.id = a.id )
這樣就會保證只有a與b關聯上的記錄纔會執行更新操作。