MySQL заменить в альтернативу - PullRequest
9 голосов
/ 28 мая 2010

Я сейчас использую замену в операторе, у меня есть уникальное поле, которое заставит его ОБНОВИТЬ, а не ВСТАВИТЬ, если найдет дубликат ...

Проблема в том, что если он находит дубликат, который я не могу обновить в нескольких столбцах, он просто стирает много.

Есть ли подобный метод "одного утверждения", где я могу просто ОБНОВИТЬ, что я хочу?

Я обнаружил слияние с, но не начинаю с первого взгляда о слиянии с таблицей, используя таблицу

1 Ответ

16 голосов
/ 25 декабря 2010

Вы захотите использовать синтаксис INSERT ... ON DUPLICATE KEY UPDATE.

http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

Вот пример, который попытается создать запись с идентификатором, днем ​​рождения и именем. Если запись с полем id существует, она выполнит указанное обновление. В таблице есть много других полей, таких как адрес электронной почты, почтовый индекс и т. Д. Я хочу оставить эти поля в покое, если я обновлюсь. (REPLACE INTO потеряет любую из этих данных, если я не включу их в оператор REPLACE INTO.)

INSERT INTO user (userid,birthday,first_name,last_name) 
   VALUES (1234,'1980-03-07','Joe','Smith') 
ON DUPLICATE KEY UPDATE 
   birthday = '1980-03-07',
   first_name = 'Joe', 
   last_name = 'Smith';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...