基于mysql中的另一列添加序列号列
我有一个具有以下表结构的表代码。id是自动递增的id,代码是一个随机唯一的15位代码,customer_id是客户的id。该表有近13万行基于mysql中的另一列添加序列号列,mysql,Mysql,我有一个具有以下表结构的表代码。id是自动递增的id,代码是一个随机唯一的15位代码,customer_id是客户的id。该表有近13万行 id code customer_id 1 123...4 1 2 124...5 1 3 128...3 1 4 234...1 2 5 678...3
id code customer_id
1 123...4 1
2 124...5 1
3 128...3 1
4 234...1 2
5 678...3 2
6 567...8 1
我在表中添加了一列序列号,我想添加一个序列号,该序列号将根据现有值的客户id为各个客户的每个值递增,如下所示。如何在mysql中实现这一点
id code customer_id serial_number
1 123...4 1 1
2 124...5 1 2
3 128...3 1 3
4 234...1 2 1
5 678...3 2 2
6 567...8 1 4
我尝试了这种方法,但我的mysql连接超时:
错误代码:2013。在查询过程中与MySQL服务器的连接中断如果我们能够看到您使用的确切查询,无论您是创建了触发器/存储过程/事件,还是在应用程序代码中创建了触发器/存储过程/事件,这都会很有用。这就是为什么发布代码总是好的,而不是概念。我已经把它放在我的问题中了。又来了:别误会我,我把我所做的事情贴出来是有原因的。在您看来,我要求提供这些信息可能很愚蠢,但是提供您在没有实际表结构的情况下提供的链接以及如何运行查询几乎没有任何帮助。这是你的问题,也是你的问题,我试图帮助你,如果你不想,没有人能强迫你提供所有的信息。祝你好运@谢谢。但我的桌子结构如上所述。我已经添加了基于上面链接使用的代码。
CREATE temporary table serial_number ( id bigint, serial_number int);
INSERT INTO serial_number ( id, serial_number )
SELECT id,
(SELECT count(*) + 1 FROM code c
WHERE c.id < code.id AND c.customer_id = code.customer_id) as serial_number
FROM code;
UPDATE test INNER join serial_number ON code.id = serial_number.id SET code.serial_number = serial_number.serial_number;