需要一些更新脚本的帮助

时间:2014-04-03 18:27:18

标签: mysql sql sql-update

我要做的是编写一些sql代码,根据该表中的值依赖于另一个表值来更新表。

我所拥有的是2个表1)名称2)CSAL

名称表有2列,我关心ID和CO_ID,ID是关键字段,CO_ID显示的是记录是另一条记录的子项。

CSAL表具有MunExpressConsent的值,可以是1或0

我想要做的是,如果父记录在CASL表中的值为1,我想更新名称表中具有该ID作为CO_ID的所有记录,以便在MunExpressConsent字段中获取值1 CSAL表。

我试过这个但是没有用:

UPDATE CASL
SET MunExpressConsent = 1
FROM TEST_AMO.dbo.CASL CASL, 
TEST_AMO.dbo.CASL CASL_1, TEST_AMO.dbo.Name Name, TEST_AMO.dbo.Name Name_1   
WHERE Name.CO_ID = Name_1.ID AND Name_1.ID = CASL.ID AND 
Name.ID = CASL_1.ID AND (Name_1.STATUS='a') AND (Name.STATUS='a') 
and Name.CO_ID = Name_1.ID

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在阅读并重新阅读您的问题后,我相信您希望执行以下操作:

UPDATE [CASL]
SET [MunExpressConsent] = 1
FROM [CASL]
INNER JOIN [Name]
    ON [CASL].[ID] = [Name].[ID]
WHERE [Name].[STATUS] = 'a'
AND [Name].[CO_ID] IN (
    SELECT parentName.[ID]
    FROM [Name] AS parentName
    INNER JOIN [CASL] AS parentCASL
        ON parentName.[ID] = parentCASL.[ID]
    WHERE parentName.[STATUS] = 'a'
    AND parentCASL.[MunExpressConsent] = 1
)

这将更新[CASL]表中具有[MunExpressConsent] = 1父记录的所有记录。

注意:通过以下关系假设父子关系在[Name]表中是自引用(伪代码如下):child record [CO_ID] column is equal to parent record [ID] column