SQL更新问题,求解惑

img


如图示,两表内容

UPDATE A
SET A.flocation = B.flocation
FROM base A
INNER JOIN 
    (SELECT t.f4, t.fmanudate, t.flocation
     FROM (SELECT p.*, ROW_NUMBER() OVER(PARTITION BY f4 ORDER BY fmanudate DESC) rn
           FROM pd p) t
     WHERE t.rn = 1) AS B
ON A.f5 = B.f4 AND A.fmanudate > B.fmanudate
WHERE A.flocation != B.flocation OR A.flocation IS NULL

需要更新的字段是A表的flocation 为何会出现重复更新的项,求解

何以见得重复了?虽然flocation重复,但是别的不同啊。你要的是合并更新的效果么

应是是出现在这里吧。 A.flocation != B.flocation 值不相等和 A.flocation 不存在,满足其中1个值就行。
也就是说,出现重复的那个 A.flocation 的值为null。

WHERE A.flocation != B.flocation OR A.flocation IS NULL