我有一张表 列是: 工厂 工程 机器 序列
数据: 1 A1 001
数据: 1 A1 002
数据: 1 A1 003
数据: 1 A2 001
数据: 1 A2 002
数据: 1 A2 002
数据: 2 B1 001
数据: 2 B1 002
数据: 2 B1 002
我想写一个update 能够更新序列这个字段
规则是 按 工厂,工程分组 机器升序 从1开始
最终要的数据如下
工厂 工程 机器 序列
1 A1 001 1
1 A1 002 2
1 A1 003 3
1 A2 001 1
1 A2 002 2
1 A2 002 3
2 B1 001 1
2 B1 002 2
2 B1 002 3
有办法实现吗
是的,可以使用SQL语句实现自表的分组更新。以下是一个Oracle的SQL示例,可以实现您所要求的结果:
UPDATE your_table t
SET t.序列 = (
SELECT COUNT(*)
FROM your_table t2
WHERE t2.工厂 = t.工厂
AND t2.工程 = t.工程
AND t2.机器 <= t.机器
)
该SQL语句将基于 "工厂"和 "工程" 进行分组,按照 "机器" 升序排列,并为每个分组中的行分配一个序列值。请将 "your_table" 替换为您的实际表名字。