Я пытаюсь очистить db с повторяющимися записями. Мне нужно переместить ссылку на одну запись и удалить другую.Запрос Mysql с использованием IN с результатом group_concat
У меня есть две таблицы: Промоутеры и объекты, каждая из которых имеет ссылку на таблицу, называемую городами. Проблема в том, что есть города с тем же именем и разными идентификаторами, которые имеют отношение к местам и промоутерам.
С помощью этого запроса можно сгруппировать все промоутеров и места с одного города записи:
SELECT c.id as id, c.name as name, GROUP_CONCAT(DISTINCT p.id) as promoters_ids, GROUP_CONCAT(DISTINCT v.id) as venues_ids
FROM cities as c
LEFT JOIN promoters as p ON p.city_id = c.id
LEFT JOIN venues as v ON v.city_id = c.id
WHERE c.name IN (SELECT name from cities group by name having count(cities.name) > 1)
GROUP BY c.name
Теперь я хочу, чтобы выполнить запрос UPDATE на промоутеров, установив CITY_ID равен результату вышеупомянутого запроса.
Что-то вроде этого:
UPDATE promoters AS pr SET pr.city_id = (
SELECT ID
FROM (
SELECT c.id as id, c.name as name, GROUP_CONCAT(DISTINCT p.id) as promoters_ids
FROM cities as c
LEFT JOIN promoters as p ON p.city_id = c.id
WHERE c.name IN (SELECT name from cities group by name having count(cities.name) > 1) AND pr.id IN promoters_ids
GROUP BY c.name
) AS T1
)
Как я могу это сделать?
Благодаря
Я не совсем понимаю, какие данные вы хотите де-дублировать? Вы хотите удалить двойные города? – GolezTrol