@ Марк Б приводит причину, по которой update
обычно не может работать с limit
.
И @Roopchand также предоставляет решение.
Для таких людей, как я, ктопытается избежать отключения safe update mode
https://stackoverflow.com/a/28316067/1278112
Этот ответ весьма полезен.Здесь приведен пример
ОБНОВЛЕНИЕ клиентов SET странаCode = 'США' ГДЕ страна = 'США';- который выдает ошибку, вы просто пишете:
ОБНОВЛЕНИЕ клиентов УСТАНОВКА countryCode = "США" ГДЕ (страна = "США" И customerNumber <> 0);- Поскольку customerNumber является первичным ключом, у вас больше нет ошибки 1175.
И когда я сталкиваюсь с update
с синтаксисом из нескольких таблиц, это также работает.
То, что я хочу, но выдаст код ошибки 1175.
UPDATE table1 t1
INNER JOIN
table2 t2 ON t1.name = t2.name
SET
t1.column = t2.column
WHERE
t1.name = t2.name;
Рабочее издание
UPDATE table1 t1
INNER JOIN
table2 t2 ON t1.name = t2.name
SET
t1.column = t2.column
WHERE
(t1.name = t2.name and t1.prime_key !=0);
Это действительно просто и элегантно.Поскольку оригинальный ответ не привлекает слишком много внимания (голосов), я публикую больше объяснений.Надеюсь, что это может помочь другим.