Преобразование команд INSERT в UPDATE

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

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

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

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

спасибо заранее, Даниэль!--9-->

редактировать - проблема решена

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

REPLACE
    INTO table_1
SELECT *
    FROM table_2;

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

4 ответов


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


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


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


вы можете легко изменить свои запросы для обновления повторяющихся строк, см. вставить ... НА ДУБЛИКАТ КЛЮЧА синтаксис в MySQL