У меня есть простой table
, состоящий из двух столбцов: col_A
и col_B
.MySQL: обновление строки и удаление оригинала на случай, если он станет дубликатом
Первичный ключ определяется по обоим.
мне нужно обновить несколько строк и присвоить col_A
значений, которые могут генерировать дубликаты, например:
UPDATE `table` SET `col_A` = 66 WHERE `col_A` = 70
Это утверждение иногда дает дубликат ключа ошибки.
Я не хочу просто игнорировать ошибку с UPDATE IGNORE
, потому что тогда строки, которые генерируют ошибку, останутся неизменными. Вместо я хочу, чтобы они были удалены, когда они будут вступать в конфликт с другой строки после того, как они были обновлены
Я хотел бы написать что-то вроде:
UPDATE `table` SET `col_A` = 66 WHERE `col_A` = 70 ON DUPLICATE KEY REPLACE
, который, к сожалению, не является законным в SQL , поэтому мне нужна помощь в поиске другого пути. Кроме того, я использую PHP и могу рассмотреть гибридное решение (т. Е. Часть запроса части php-кода), но имейте в виду, что я должен выполнять эту операцию обновления много миллионов раз.
спасибо за ваше внимание,
Сильвио
Напоминание: Синтаксис UPDATE
«s имеет проблемы с соединениями с одной и той же таблицы, обновляемой
EDIT: извините, имя столбца в предложение WHERE было неправильным, теперь я исправил его
он работает, спасибо! –