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
是的,它肯定会。另外,如果我的查询帮助回答您的问题,请将我的答案标记为正确答案。 –