我想编写一个简单的更新,部分用于协调子组中人员的数据;
我的桌子是:
CREATE TABLE table(
id INT,
PersonGroupId INT,
PersonId INT,
Value INT
);
INSERT INTO table(id, PersonGroupId, PersonId, Value)
VALUES
(1, 100, 123, 1),
(2, 100, 2, NULL),
(3, 100, 3, 1),
(4, 101, 2, 1),
(5, 101, 3, NULL),
(6, 102, 2, NULL),
(7, 102, 3, NULL),
(8, 103, 2, 1),
(9, 103, 3, 1);
[这是我想要实现的目标的示例]
我有数据: 第一个人 ID = 2 第二个人 ID = 3
我想写这样的更新: 在存在 personId=2 和 personId=3 的每个子组(PersonGroupId)内,更改值,使 personId =2 和 personId =3 具有相同的值,如下所示:
第一人称的价值 | 第二人的价值 | 结果(两人都一样) |
---|---|---|
1 | 空 | 1 |
空 | 1 | 1 |
1 | 1 | 1 |
空 | 空 | 空 |
我尝试编写更新,但我不知道如何使该命令单独为每个 PersonGroupId (满足条件)工作。请帮我写这个
这是一种方法:
update table1
set value = ( select max(Value)
from table1 t
group by persongroupid
having table1.persongroupid = t.persongroupid
)