2016-02-29 71 views
1

我有一个“临时”从招生的java运输填充表。我正在做的是将“临时”表与我在具有选择查询的CTE中填充的值进行比较。接下来我需要做的是更新两个不同的表格。这里是我的“临时”表和CTE的比较查询:比较了“临时”与值表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

那么它是mySql还是Sql-Server?不能同时... –

回答

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