更新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
我认为在最后一行的第二行有一个错字,从我的理解中'latest.LatestId'应该是'latest.CustomerID'。我改变它后,它工作正常。我已经修复了你的答案。谢谢。 – 2010-06-09 13:16:04
@David G - 是的,那是一个错字! – AdaTheDev 2010-06-09 13:20:03