У меня есть простой table
, состоящий из двух столбцов: col_A
и col_B
.
Первичный ключ определен над обоими.
Мне нужно обновить некоторые строки и присвоить 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-код части запроса), но помните, что мне приходится выполнять эту операцию обновления много миллионов раз.
спасибо за внимание,
Silvio
Напоминание: синтаксис UPDATE
имеет проблемы с соединениями с той же таблицей, которая обновляется
РЕДАКТИРОВАТЬ : извините, неверно имя столбца в предложении WHERE, теперь я исправил его