我有一个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
表格看起来像
id | seq | 旧状态 | 新状态|||
---|---|---|---|---|---|
1 | 1 | 1 | 2 | ||
1 | 2 | 2 | 3 | ||
1 | 3 | 3 | 9 | ||
1 | 4 | 9<2>[/tr>||||
1 | 5 | 2 | 3 | ||
2 | 1 | 1 | 2 | ||
2 | 2 | 2 | 3 |
我不认为你可以从计算列中做到这一点,但你可以在这里使用SUM()
作为分析函数:
SELECT *, SUM(new_status = 9) OVER (PARTITION BY id ORDER BY seq) + 1 AS _version
FROM Demo
ORDER BY id, seq;