添加具有相同id mysql的Sequence

时间:2015-07-06 10:53:53

标签: php mysql

我正在处理一些遗留代码/数据库,需要在数据库中添加一个字段,该字段将记录与该(外部)id相关的序列号。

示例产品表(当前):

PRODUCT_ID  some_stuff
1           ...
1           ...
1           ...
2           ...
2           ...
1           ...

产品表没有自动增量。

我需要添加一个sequenceid列,它为每个帐户单独递增,实现:

product_id  SEQ     another_stuff
1           1       ...
1           2       ...
1           3       ...
2           1       ...
2           2       ...
1           4       ...

序列与product_id有关。

有没有办法让它有效?

1 个答案:

答案 0 :(得分:0)

首先添加列:

alter table add column seq int;

然后你可以使用变量来做到这一点:

set @rn = 0;
set @p = -1;

update products p
    set seq = (@rn := if(@p = product_id, @rn + 1,
                         if(@p := product_id, 1, 1)
                        )
              )
    order by product_id;

请注意,您无法控制行的顺序,因为您似乎没有一个字段说明哪一行应该是第一行。