我有一个如下所示的表:http://sqlfiddle.com/#!9/e39c3e/1
我的目标是让 SID 看起来像名称 + 索引。
因此,当我 select * from Person
时,它应该有一个输出:
Name SID
Bruno Bruno1
Carl Carl2
Carl Carl2
Danielle Danielle3
我尝试使用 auto_increment 制作另一列的索引,但当然这不会按照我想要的方式工作。
最佳答案
编写一个子查询,为每个不同的名称分配一个递增的数字。将其与 UPDATE
查询中的表连接起来。
UPDATE Person AS p1
JOIN (
SELECT name, CONCAT(name, @index := @index + 1) AS newSID
FROM (SELECT DISTINCT name
FROM Person
ORDER BY name) AS p2
CROSS JOIN (SELECT @index := 0) AS var
) AS p2 ON p1.name = p2.name
SET p1.SID = p2.newSID
关于MySQL 仅向具有不同值的表添加索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49638892/