sql - 跨联接语法更新
问题描述
我正在尝试获取更新语句来满足我的需要。我用 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
解决方案
您可以将查询编写为:
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;
但是,您的原始查询应该做您想做的事。
推荐阅读
- ssl - ssl3_read_bytes:sslv3 警报握手失败 [kafka-connect] curl
- python - Python For Loops:用原始值替换 cat 代码时优化代码速度
- java - 通过嵌套 if 语句计算员工奖金
- wso2 - WSO2 - 消息日志 - 无法添加绑定:boundMessageRouter=amq.topic
- postscript - PostScript 如何运行 url?
- html - 在不使用 JavaScript 的情况下将自动播放添加到图像滑块
- node.js - 如何使用 Chrome DevTools 查找 NodeJS/Express 路由中的内存泄漏
- java - 在 VScode maven 项目中创建一个 servlet
- android - gradle api不适用于Android Studio中的多项目设置
- c# - 使用 Serilog 记录 SqlCommand CommandText 和参数以及 SqlDataReader 字段的最佳/最短方法是什么?