我要做的是编写一些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
感谢您的帮助
答案 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
子>