У меня есть таблица, которая выглядит так: http://sqlfiddle.com/#!9/e39c3e/1
Моя цель состоит в том, чтобы SID выглядел как индекс Name+. Поэтому, когда я 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