MySQL:根据另一个字段添加序列列

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

表格数据示例(当前):

ID     ACCOUNT     some_other_stuff

1 1 ...

2 1 ...

3 1 ...

4 2 ...

5 2 ...

6 1 ...

我需要添加一个sequenceid列,该列分别为每个帐户递增,以实现:

ID     ACCOUNT     SEQ     some_other_stuff

1 1 1 ...

2 1 2 ...

3 1 3 ...

4 2 1 ...

5 2 2 ...

6 1 4 ...

请注意,该顺序与帐户有关。

有什么方法可以用SQL来实现,还是可以使用PHP脚本为我完成工作?

TIA,Kev

回答:

这应该可以,但是可能很慢:

CREATE temporary table seq ( id int, seq int);

INSERT INTO seq ( id, seq )

SELECT id,

(SELECT count(*) + 1 FROM test c

WHERE c.id < test.id AND c.account = test.account) as seq

FROM test;

UPDATE test INNER join seq ON test.id = seq.id SET test.seq = seq.seq;

我称该表为“测试”;显然,需要正确设置。您必须使用临时表,因为MySQL不允许您使用要更新的同一表中的子选择。

以上是 MySQL:根据另一个字段添加序列列 的全部内容, 来源链接: utcz.com/qa/415274.html

回到顶部