MySQL Добавление индекса в таблицу только с разными значениями

0

У меня есть таблица, которая выглядит так: http://sqlfiddle.com/#!9/e39c3e/1

Моя цель состоит в том, чтобы SID выглядел как индекс Name+. Поэтому, когда я select * from Person он должен иметь вывод:

Name        SID
Bruno       Bruno1
Carl        Carl2
Carl        Carl2
Danielle    Danielle3

Я попытался сделать еще один столбец с индексами, используя auto_increment, но, конечно, это не будет работать так, как хотелось бы.

  • 0
    какой в этом смысл? Все копии имени имеют одинаковый индекс, поэтому они эквивалентны.
  • 1
    Уникальные индексы на самом деле не уникальны.
Показать ещё 1 комментарий
Теги:
database

1 ответ

1
Лучший ответ

Напишите подзапрос, который присваивает инкрементный номер каждому отдельному имени. Присоедините это к таблице в запросе 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

  • 0
    Это работает, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню