任何人都可以提供帮助 - 见下面两张表
Table - Master
Field 1 - Id
Field 2 - Name
Field 3 - Address
Field 4 - Effective End Date
Filed 5 - Last updated date
Table - Child
Field 1 - Id
Field 2 - Name
Field 3 - Address
我需要在子节点中从Parent进行查找,如果父记录不存在(基于Id,Name和Address),则更新Table Master的有效结束日期和上次更新日期。
SQL的新手,因此对这个基本查询感到苦苦挣扎。
此致
答案 0 :(得分:2)
试试这样:
UPDATE m
SET [Effective End Date] = GETDATE()
, [Last updated date] = GETDATE()
FROM Master m
WHERE NOT EXISTS
(
SELECT *
FROM Child c
WHERE c.Id = m.Id
AND c.Name = m.Name
AND c.Address = m.Address
)
如果您想在Master
中更新记录,而Id, Name, Address
表中不存在具有相同Child
的记录,则可以这样做。还有一个OUTPUT
子句,它返回受更新影响的行。日期正在更新到今天的日期,但您可以将其设置为您需要的任何内容。
这是 SQL Fiddle
答案 1 :(得分:1)
我需要在子节点中从Parent进行查找,如果父记录不存在(基于Id,Name和Address),则更新Table Master的有效结束日期和上次更新日期。
您在寻找IF
和EXISTS
吗?
IF EXISTS(
SELECT 1 FROM Child c
WHERE Id = @Id
AND Name = @Name
AND Address = @Address
)
BEGIN
UPDATE Master
SET [Effective End Date] = @EffectiveEndDate
[Last updated date] = @LastUpdatedDate
WHERE Id = @Id
AND Name = @Name
AND Address = @Address
END
答案 2 :(得分:0)
试试这个
Update Master Set [Effective End Date] = GETDATE(),
[Last updated date] = GETDATE()
Where id not in ( select distinct id from Child)
简单