我有一个" temp'从java中可传输的注册填充的表。我正在做的是比较" temp"带有值的表我在带有选择查询的CTE中填充。我接下来需要做的是更新两个不同的表。这是我对" temp"的比较的查询表和CTE:
WITH CTE AS
(
SELECT S.SYS_USER_NAME, PG.PAX_ID
FROM component.SYS_USER S
INNER JOIN component.PAX_GROUP PG
ON S.PAX_ID = PG.PAX_ID
WHERE (ROLE_CODE = 'AC' and THRU_DATE is null) or
(ROLE_CODE = 'DLRP' and THRU_DATE is null)
)
SELECT * FROM CTE
INNER JOIN component.TEMP_CONTROL_NUM
ON TEMP_CONTROL_NUM.CONTROL_NUM = CTE.SYS_USER_NAME
接下来我要做的是更新两个不同的表。我需要将状态列设置为非活动状态,而另一个我需要设置直通日期。
我遇到的问题是使用SELECT编写UPDATE。我有类似的东西:
UPDATE component.SYS_USER SET STATUS = 'I'
WHERE SYS_USER_NAME =
(SELECT * FROM CTE INNER JOIN component.TEMP_CONTROL_NUM ON
TEMP_CONTROL_NUM = CTE.SYS_USER_NAME)
这是正确的吗?我意识到我只是试图更新一个表,但我想如果我有一个表更新,我可以找出另一个。它似乎不是。 提前谢谢。
答案 0 :(得分:1)
;WITH CTE as
(
...
)
UPDATE u SET
STATUS = 'I'
FROM component.SYS_USER u
INNER JOIN CTE c on c.SYS_USER_NAME = u.SYS_USER_NAME
INNER JOIN component.TEMP_CONTROL_NUM t ON t.TEMP_CONTROL_NUM = c.SYS_USER_NAME