中创建递增值我有以下表格:SQL查询组
+----+--------+-----+
| id | fk_did | pos |
+----+--------+-----+
此表包含数百行的,他们每个人引用另一个表fk_did
。 pos
中的值目前总是为零,我想更改。
基本上,对于fk_did
的每个组,pos
柱应从零开始并且是递增的。行的排列顺序无关紧要。
实施例输出(select * from table order by fk_did, pos
),我想获得:
+----+--------+-----+
| id | fk_did | pos |
+----+--------+-----+
| xx | 0 | 0 |
| xx | 0 | 1 |
| xx | 0 | 2 |
| xx | 1 | 0 |
| xx | 1 | 1 |
| xx | 1 | 2 |
| xx | 4 | 0 |
| xx | 8 | 0 |
| xx | 8 | 1 |
| xx | 8 | 2 |
+----+--------+-----+
- 必须有具有的
fk_did
相同的组合和pos
pos
没有两行必须升序对每个fk_did
- 如果有一行
pos
> 0,还必须有一行具有相同的fk_did
和lo更多pos
。
这可以通过单个更新查询来完成吗?
插入记录应该用WITH子句非常简单和ROW_NUMBER。 –