mysql - 使用不同的值更新选择查询中的记录
问题描述
我有一个 INSERT INTO 查询,可以很好地在添加父记录时创建子记录。我基本上需要运行相同的东西,但不是添加新的子记录,而是需要更新包含总和值的列。
例如,我有以下数据。Shift_Roster_ID 是第一个表的 PK。RosterID 和 ShiftID 都是外键。对于 ShiftID=1,我想为每个唯一的 RosterID 更新 ShiftCount。ShiftCount 是第二个表中 PeriodID 与 ShiftID=1 的 PeriodID 匹配的任何班次的响应值之和。
+-----------------+----------+---------+------------+----------+
| Shift_Roster_ID | RosterID | ShiftID | ShiftCount | Response |
+-----------------+----------+---------+------------+----------+
| 1 | 1 | 1 | 0 | 1 |
+-----------------+----------+---------+------------+----------+
| 2 | 2 | 1 | 0 | 3 |
+-----------------+----------+---------+------------+----------+
| 3 | 3 | 1 | 0 | 8 |
+-----------------+----------+---------+------------+----------+
| 4 | 1 | 2 | 0 | 1 |
+-----------------+----------+---------+------------+----------+
| 5 | 2 | 2 | 0 | 8 |
+-----------------+----------+---------+------------+----------+
| 6 | 3 | 2 | 0 | 7 |
+-----------------+----------+---------+------------+----------+
| 7 | 1 | 2 | 0 | 7 |
+-----------------+----------+---------+------------+----------+
| 8 | 2 | 3 | 0 | 7 |
+-----------------+----------+---------+------------+----------+
| 9 | 3 | 3 | 0 | 6 |
+-----------------+----------+---------+------------+----------+
+---------+----------+
| ShiftID | PeriodID |
+---------+----------+
| 1 | 1 |
+---------+----------+
| 2 | 1 |
+---------+----------+
| 3 | 2 |
+---------+----------+
结果应该是
+-----------------+----------+---------+------------+----------+
| Shift_Roster_ID | RosterID | ShiftID | ShiftCount | Response |
+-----------------+----------+---------+------------+----------+
| 1 | 1 | 1 | **2** | 1 |
+-----------------+----------+---------+------------+----------+
| 2 | 2 | 1 | **11** | 3 |
+-----------------+----------+---------+------------+----------+
| 3 | 3 | 1 | **15** | 8 |
+-----------------+----------+---------+------------+----------+
| 4 | 1 | 2 | 0 | 1 |
+-----------------+----------+---------+------------+----------+
| 5 | 2 | 2 | 0 | 8 |
+-----------------+----------+---------+------------+----------+
| 6 | 3 | 2 | 0 | 7 |
+-----------------+----------+---------+------------+----------+
| 7 | 1 | 2 | 0 | 7 |
+-----------------+----------+---------+------------+----------+
| 8 | 2 | 3 | 0 | 7 |
+-----------------+----------+---------+------------+----------+
| 9 | 3 | 3 | 0 | 6 |
+-----------------+----------+---------+------------+----------+
解决方案
推荐阅读
- javascript - 控制台说 Math.Floor 不是函数。我怎样才能解决这个问题
- macos - VSCode 等宽字体不是等宽字体,如何解决这个问题?
- graphql - Apollo Server:如何根据回调发送响应?
- vba - VBA excel从文件夹中获取文件名
- python - Bazel:如何在测试前运行 py_binary 以生成输入文件
- mysql - 将多个订单项合并为一个
- node.js - 如何在 NestJS 服务器上动态更改 TypeORM 配置?
- hazelcast - setStoreByValueJCache + Hazelcast 接口不起作用
- reactjs - 无法在全新的 create-react-app 上运行 npm install
- typescript - 打字稿:防止分配具有比目标界面中指定的更多属性的对象