@idaho

MySql Как сделать поиск по сравнению с заменой?

Доброго
Есть задача по обработке нескольких тысяч записей.
Суть: Нужно заменить в поле parent значение имени на ID
вставить ID вместо имени в поле parent, если в поле parent имя совпадает с ID Name
Пример таблицы:
(Vasya заменить на 1, Vassiliy заменить на 11)

ID | Name | Parent
(1, Vasya, Petya),
(2, Misha, Vasya),
(3, Grisha, Vasya),
(4, Pasha, Vasya),
(5, Masha, Vasya),
(6, Serj, Vassiliy),
(7, Ivan1, Vassiliy),
(8, Ivan2, Vassiliy),
(9, Garik, Vassiliy),
(10, Vassiliy, Vassiliy),
(11, Vassiliy, Petrovich),
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
kawabanga
@kawabanga
Привыкните, если у вас единовременная задача - выполнять ее топором. Вот правда. Смысл придумать красивый скрипт, если можно взять и перебором перебрать. И фиг что скрипт будет работать 10 минут (хотя по факту за минуту справится.)

В любом случае советую добавить поле parent_id, и не записывать цифры в parent и манипулировать этим полем. Не всегда решение должно, может быть элегантным.

Алгоритм 1)
Вытаскивать по одному ид (если 1 постоянный список), и выполнять запрос на update:
"update users set parent_id=3 where Parent=Grisha "

Алгоритм 2)
Добавляем поле is_read временное, где дефолтом ставим 0
Можно временно добавить метку чтения, тогда запрос выйдет быстрее
и точно также перебираем.

Алгоритм 3)
Если вы уже неплохо разбираетесь в mysql запросах:
UPDATE users i INNER JOIN
users o
ON i.name = o.parent
SET o.parent_id = i.id
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
serginhold
@serginhold
простейший update + join на туже самую таблицу
за тебя запрос чтоли написать? это основы основ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы