0
我無法獲得以下與Oracle相關的查詢以僅對記錄的一個子部分執行更新。目前它更新所有記錄。相關更新查詢
我有一個表(TBL_REQUESTS),它看起來像:
request_id employee_id status
------------------------------------
1 1000
1 1001
2 1003
2 1004
2 1005
3 1006
我有一個觀點(VW_STATUS),它看起來像:
employee_id status
---------------------
1000 failed
1001 closed
1002 open
1003 open
1004 close
1005 open
1006 open
我試圖寫一個UPDATE語句會使用TBL_REQUESTS.request_id等於傳遞值的VW_STATUS中的相應狀態更新TBL_REQUESTS中員工的狀態字段。另外一個問題是,每個員工在VW_STATUS中可能會有超過1條記錄,但如果出現問題,我總是可以尋找一種方法在VIEW中解決這個問題。
這種嘗試在TBL_REQUESTS更新的每一行:
UPDATE TBL_REQUESTS r1
SET r1.status =
(SELECT s.status
FROM VW_STATUS s
INNER JOIN TBL_REQUESTS r2 ON s.employee_id = r2.employee_id
WHERE rd2.request_id = 2)
WHERE EXISTS
(SELECT s.status
FROM VW_STATUS s
INNER JOIN TBL_REQUESTS r2 ON s.employee_id = r2.employee_id
WHERE rd2.request_id = 2)
這看起來比我的版本更好 - 但是,如果員工出現在多個請求中,是不是也會在那裏更新它們呢?這會緩解嗎? 'UPDATE TBL_REQUESTS R1 SET r1.status = (SELECT s.status FROM VW_STATUS小號 INNER JOIN TBL_REQUESTS R2上s.employee_id = r2.employee_id WHERE rd2.request_id = 2) WHERE r1.employee_id在 (SELECT s.employee_id FROM VW_STATUS s INNER JOIN TBL_REQUESTS r2 ON s.employee_id = r2.employee_id WHERE rd2.request_id = 2)和r1.request_id = 2'編輯 - 沒有意識到輸入保存的註釋。 – MidnightThoughtful
是的,它肯定會。另外,如果我的查詢幫助回答您的問題,請將我的答案標記爲正確答案。 –