@ Brendan имеет самое короткое решение с объединенным обновлением.
Вот другое решение с копированием данных:
CREATE TABLE parents LIKE t;
INSERT INTO parents SELECT * FROM t;
UPDATE t SET parent=(SELECT id FROM parents WHERE name=t.parent ORDER BY id ASC LIMIT 1);
Представление может быть достаточноно MySQL отказывается использовать его таким образом.
После запуска обновления вы можете изменить тип поля parent
на тот же, который имеет id
:
ALTER TABLE t CHANGE parent parent integer;
ИКонечно, вы можете удалить таблицу копирования:
DROP TABLE parents;