按带约束的组添加序列号



我有一个Demo

CREATE TABLE `Demo` (
`id` int(11) NOT NULL,
`seq` int(11) NOT NULL,
`old_status` int(11) NOT NULL,
`new_status` int(11) NOT NULL
)

和演示数据

INSERT INTO `Demo` (`id`, `seq`, `old_status`, `new_status`) VALUES
(1, 1, 1, 2),
(1, 2, 2, 3),
(1, 3, 3, 9),
(1, 4, 9, 2),
(1, 5, 2, 3),
(2, 1, 1, 2),
(2, 2, 2, 3);

Demo表格看起来像

新状态9<2>[/tr>
idseq旧状态
1112
1223
1339
14
1523
2112
2223

我不认为你可以从计算列中做到这一点,但你可以在这里使用SUM()作为分析函数:

SELECT *, SUM(new_status = 9) OVER (PARTITION BY id ORDER BY seq) + 1 AS _version
FROM Demo
ORDER BY id, seq;

最新更新