更新SQL Server表的数据从另一个表

问题描述:

我有两个基本的SQL Server表:更新SQL Server表的数据从另一个表

Customer (ID [pk], AddressLine1, AddressLine2, AddressCity, AddressDistrict, AddressPostalCode) 

CustomerAddress(ID [pk], CustomerID [fk], Line1, Line2, City, District, PostalCode) 

CustomerAddress包含客户记录的多个地址。

对于每个客户记录,我想合并最近的CustomerAddress记录,其中最近的CustomerAddress记录由最高的CustomerAddress ID值确定。

我目前得到了以下内容:

UPDATE Customer 
SET 
    AddressLine1 = CustomerAddress.Line1, 
    AddressPostalCode = CustomerAddress.PostalCode 
FROM Customer, CustomerAddress 
WHERE 
    Customer.ID = CustomerAddress.CustomerID 

其作品,但我怎么能保证,最近一段时间(最高ID)CustomerAddress记录选择更新Customer表?

像这样的东西应该做的伎俩。

UPDATE c 
SET c.AddressLine1 = a.Line1 
FROM Customer c 
    JOIN 
    (
     SELECT CustomerID, MAX(ID) AS LatestId 
     FROM CustomerAddress 
     GROUP BY CustomerID 
    ) latest ON c.ID = latest.CustomerID 
    JOIN CustomerAddress a ON latest.LatestId = a.ID 
+0

我认为在最后一行的第二行有一个错字,从我的理解中'latest.LatestId'应该是'latest.CustomerID'。我改变它后,它工作正常。我已经修复了你的答案。谢谢。 – 2010-06-09 13:16:04

+0

@David G - 是的,那是一个错字! – AdaTheDev 2010-06-09 13:20:03