UPDATE語句關聯時需注意的事

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關聯上的記錄纔會執行更新操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章