Преобразование команд INSERT в UPDATE - PullRequest
10 голосов
/ 12 сентября 2010

У меня есть две INSERT команды, которые для меня бесполезны, потому что два набора строк - те, которые уже есть в таблице, и те, которые у меня есть как INSERT команды, - не разделены. Обе команды вставляют множество строк и множество значений.

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

Есть ли простой способ "преобразовать" эти команды в UPDATE?

Я знаю, это звучит глупо, потому что почему я делаю INSERT команды, если я хочу UPDATE. Просто чтобы прояснить сценарий: другой разработчик дал мне сценарий:)

Спасибо заранее, Daniel

РЕДАКТИРОВАТЬ - проблема решена

Сначала я создал таблицу и заполнил ее своими командами INSERT, затем я использовал следующую команду REPLACE:

REPLACE
    INTO table_1
SELECT *
    FROM table_2;

Первоначально его можно найти по адресу: Как объединить две таблицы MySQL?

Ответы [ 4 ]

15 голосов
/ 12 сентября 2010

Ключевое слово MySQL REPLACE делает это. Просто замените ключевое слово INSERT в ваших запросах словом REPLACE, и оно должно обновить строки вместо вставки новых. Обратите внимание, что это будет работать, только если вы вставляете столбец первичного ключа или уникального ключа.

0 голосов
/ 12 сентября 2010

Вы можете легко изменить свои запросы, чтобы обновить дублирующиеся строки, см. INSERT ... ON DUPLICATE KEY синтаксис в MySQL

0 голосов
/ 12 сентября 2010

Для MySQL вы можете использовать синтаксис INSERT IGNORE или INSERT ... ON DUPLICATE UPDATE.См. Справочное руководство MySQL

0 голосов
/ 12 сентября 2010

Вам придется вручную переписывать их в обновления.Если я допускаю такую ​​проблему, я сначала запрашиваю счет определенного первичного ключа, если ничего не найдено, я вставляю общий набор данных и обновляю его впоследствии.Таким образом можно добавлять новые данные и обновлять уже существующие, и вам не нужно различать вставку новых данных и обновление данных.

...