首页 > 解决方案 > 跨联接语法更新

问题描述

我正在尝试获取更新语句来满足我的需要。我用 INNER / OUTER LEFT / RIGHT JOINS 尝试了以下操作。尽管有 usertype3 子值,但我仍然在 usertype2 表中保留未更新的记录。我会以正确的方式解决这个问题吗?Usertype2 和 Usertype3 将始终具有 mat_id 父值,事物始终是父记录,而 usertype2 和 usertype3 是子记录。

UPDATE f
SET f.USR1_05_01 = expTot
FROM lntmuid.usertype2 f JOIN
(
    SELECT MAX(e.mat_id) AS matId, SUM(CONVERT(money, e.USR1_02_08)) AS expTot 
    FROM TimeMatters.lntmuid.usertype3 e 
    GROUP BY mat_id
)
e ON f.mat_id = e.matId
WHERE f.mat_id = e.matId

标签: sqlsql-servertsql

解决方案


您可以将查询编写为:

UPDATE f
    SET f.USR1_05_01 = e.expTot
FROM lntmuid.usertype2 f JOIN
     (SELECT e.mat_id, SUM(CONVERT(money, e.USR1_02_08)) AS expTot 
      FROM TimeMatters.lntmuid.usertype3 e 
      GROUP BY mat_id
     ) e
     ON f.mat_id = e.matId;

但是,您的原始查询应该做您想做的事。


推荐阅读