MySQL:根据另一个字段添加序列列
我正在处理一些旧代码/数据库,需要在数据库中添加一个字段,该字段将记录与该(外部)ID相关的序列号。
表格数据示例(当前):
ID ACCOUNT some_other_stuff1 1 ...
2 1 ...
3 1 ...
4 2 ...
5 2 ...
6 1 ...
我需要添加一个sequenceid列,该列分别为每个帐户递增,以实现:
ID ACCOUNT SEQ some_other_stuff1 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