1

我有一张表,SUBSCRIBERS每个订阅者可以在其中拥有多个条目。

(假设因为它不再是订阅者,现在又变成了客户,所以它具有不同的“身份”但相同的“subno”)

我需要一条UPDATE语句来更新一行中的一列(假设他们的地址),但仅适用于该订阅者的最新记录(最新的EffectiveDate)。

所以我想出了如何选择这样的一行:

SELECT 
    t1.identity, t1.Subno, t1.EffectiveDate
FROM 
    SUBSCRIBERS t1
INNER JOIN 
    (SELECT subno,max(EffectiveDate) as LatestDate 
     FROM SUBSCRIBERS
     GROUP BY Subno) t2 ON t1.Subno = t2.Subno AND t1.EffectiveDate = t2.LatestDate

但我不知道如何更新给定 subno 值的行。好吧,我愿意,但我不想用 17 个嵌套的 select 语句来做。

谢谢!

4

1 回答 1

4

您可以使用“更新自”:

UPDATE SUBSCRIBERS 
SET Address = 'the address' 
FROM SUBSCRIBERS t1
INNER JOIN 
  (SELECT subno,max(EffectiveDate) as LatestDate FROM SUBSCRIBERS
   GROUP BY Subno) t2 
ON t1.Subno = t2.Subno and t1.EffectiveDate = t2.LatestDate
于 2012-11-27T15:28:13.047 回答