MySQL 5.6Обновить все строки, связанные с дубликатами другой таблицы
У нас есть две таблицы: cars
и views
.
Cars Views
---+------- ---+-------
id | desc id | car_id
---+------- ---+-------
1 | desc1 1 | 1
2 | Desc1 2 | 2
3 | desc2 3 | 3
Проблема заключается с desc
поля в таблице автомобилей. Эта строка должна была быть уникальной, но мы, к сожалению, позволили пользователям заполнить верхние значения, что привело нас к ситуации, когда (по приведенному выше примеру) было два дублированных строки: desc1
и Desc1
.
Способ устранения: DELETE
дублированные автомобили и сохранить только первый. Мы знаем, как с этим бороться.
Наша проблема возникает перед обновлением связанной таблицы, когда некоторые виды связаны с автомобилем, который имеет дублированный desc (например, автомобиль, который будет удален). Эти мнения должны быть обновлены назначаются на первый из дублированных автомобилей (в данном случае автомобиль ID # 1)
После UPDATE
, мы хотели бы этот результат просмотров:
Views
---+-------
id | car_id
1 | 1
2 | 1
3 | 3
Мы могут получить все идентификаторы дублированных автомобилей и иметь дело с удалением, но мы застряли с этим UPDATE
.
является идентификатором дубликата всегда * выше *, а затем идентификатором реального ряда? как в вставленном после этого, в случае автоинкрементного столбца id? –
Точно, дублирование, которое мы хотим удалить, это те, у которых есть более высокие идентификаторы. Мы хотим сохранить только один нижний идентификатор. – lisbonman