0

任何人都可以帮忙 - 见下面两张表

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

我需要从子项中的父项进行查找,如果父项记录不存在(基于 ID、名称和地址),则更新表主的有效结束日期和最后更新日期。

SQL 的新手,因此很难处理这个基本查询。

问候

4

3 回答 3

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, AddressChildOUTPUT

这是一个SQL 小提琴

于 2013-02-19T08:07:42.450 回答
1

我需要从子项中的父项进行查找,如果父项记录不存在(基于 ID、名称和地址),则更新表主的有效结束日期和最后更新日期。

您在寻找IFEXISTS吗?

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
于 2013-02-19T08:10:10.057 回答
0

尝试这个

Update Master  Set [Effective End Date] = GETDATE(), 
[Last updated date] = GETDATE()
Where id  not in ( select distinct id from Child)

简单的

于 2013-02-19T08:16:29.090 回答