【发布时间】:2011-04-15 10:58:58
【问题描述】:
我对 sql 还很陌生,希望有人可以帮助我进行更新查询。我有一个包含 group_id (外键)、 user_id 和 user_index 列的用户表。每个单独的group_id对应多个用户,user_id是一个从1到表大小的连续列。
我正在寻找一个将更新 user_index 列的查询,以便对于每个 group_id,每个用户都有一个从 1 开始的唯一顺序索引。因此在组 1 中会有 user_index 1、2、3。 .. 在第 2 组中会有 user_index 1,2,3... 等等。这是一个澄清的例子:
初始状态:
user_id | group_id | user_index
1 1 0
2 1 0
3 1 0
4 2 0
5 3 0
6 3 0
想要的状态:
user_id | group_id | user_index
1 1 1
2 1 2
3 1 3
4 2 1
5 3 1
6 3 2
我希望这很清楚。这在 C 或 C++ 中很容易做到,但我想知道是否有办法在 sql 中做到这一点。
【问题讨论】:
-
组成一个组的user_ids是否总是形成一个完整的序列?或者 group_id=4 可以是 user_id IN ( 7, 8, 20 ) 吗?
-
它们不是一个完整的序列,通常由于行被删除而丢失了一些。
标签: sql