我正在处理一些旧代码/数据库,需要在数据库中添加一个字段,该字段将记录与该(外部)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不允许您使用要更新的同一表中的子选择。