У меня есть таблица «my_table» с двумя полями: «name» и «name_id». Поле "name_id" является числом.
name| name_id
----+---------
foo | NULL
foo | NULL
bar | NULL
bar | NULL
bar | NULL
Мне нужно обновить поле «name_id» с помощью порядкового номера уникального значения поля «name», чтобы таблица результатов выглядела следующим образом:
name| name_id
----+---------
foo | 1
foo | 1
bar | 2
bar | 2
bar | 2
Я написал мини-программу для MySQL:
SET @counter := 0;
UPDATE
(
SELECT `name`, (@counter := @counter + 1) AS `newId`
FROM
(
SELECT DISTINCT `name`
FROM `my_table`
ORDER BY `name`
) AS `temp`
) AS `src` RIGHT JOIN `my_table` AS `dest` ON `dest`.`name` = `src`.`name`
SET`dest`.`name_id` = `src`.`newId`;
Правильно ли это решение? Где лучшие решения для решения этой задачи?