MySQL Agregar un índice a la tabla solo con valores distintos
Tengo una tabla que se ve así: http://sqlfiddle.com/#! 9/e39c3e/1
Mi objetivo es que el SID se vea como el Nombre + un índice.
Entonces, cuando select * from Person
debería tener una salida de:
Name SID
Bruno Bruno1
Carl Carl2
Carl Carl2
Danielle Danielle3
He intentado hacer otra columna con los índices usando auto_increment pero, por supuesto, eso no funcionará como me gustaría.
Mostrar la mejor respuesta
Publicado : 3 April, 2018 @ 20:44
¿Cuál es el punto de esto? Todas las copias del nombre tienen el mismo índice, por lo que son equivalentes.
Publicado : 3 April, 2018 @ 20:47
Los índices únicos no son realmente únicos.
Publicado : 3 April, 2018 @ 20:47
@Barmar Actualicé la pregunta, tienes razón, el índice no es único.
Publicado : 3 April, 2018 @ 20:49
Escriba una subconsulta que asigne un número creciente a cada nombre distinto. Unir eso con la tabla en una consulta 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
DEMO
Publicado : 3 April, 2018 @ 20:52