MySQL копировать данные из таблицы в таблицу 2 без дублирования данных и добавлять новые строки

0

У меня есть 2 таблицы:

table1 - IP, SN, версия, дата, рабочий

table2 - IP, SN, Vesrion

Я хочу добавить в таблицу2 только IP-адреса, которых нет в таблице уже из таблицы1. И обновите версию SN + в соответствии с таблицей 1 (только новые строки, которые я добавил)

Я нашел здесь, как сделать обновление в соответствии с IP из другой таблицы, но я не нашел, как добавить его без дубликата.

Это то, что я хочу сделать:

table 1 
IP
10.0.0.5
10.0.0.6
10.0.0.7

table2 
IP 
10.0.0.5
192.168.30.11
1.1.1.1

Таким образом, в конце функции table1 не изменится, а table2 будет:

IP
10.0.0.5
192.168.30.11
1.1.1.1
10.0.0.6
10.0.0.7

Благодарю.

Теги:
mysql-workbench
sql-update

2 ответа

0

Используйте NOT EXISTS чтобы исключить строки с IP уже находящиеся в table1.

INSERT INTO table1
            (IP)
            SELECT t1.ROU_IP
                   FROM routers t1
                   WHERE NOT EXISTS (SELECT *
                                            FROM table1 t2
                                            WHERE t2.IP = t1.ROU_IP);
  • 0
    Извините - я заблудился, вы можете показать mw с моими собственными именами строк? Спасибо ,
  • 0
    @Korenron: у строк нет имен. Может быть, вы имеете в виду столбцы? Но я использовал имена из вашего ОП. Так что ты имеешь в виду?
Показать ещё 4 комментария
0

Вот два отдельных запроса, чтобы выполнить эту работу.

  1. Добавить записи в таблицу 2, которых нет

    INSERT INTO table2 (SELECT IP, SN, Vesrion FROM table1 where table1.IPnot in (select IPfrom table2));
    
  2. Обновление существующих данных

    UPDATE TABLE table2 INNER JOIN table1 ON table2.IP = table1.IP SET table2.SN = table1.SN, table2.vesion = table1.version WHERE table1.version <> table2.version OR table2.SN <> table1.SN
    
  • 0
    не работает - ничего не добавляется :-( что может быть не так?
  • 0
    Можете ли вы предоставить мне данные и схему таблиц 1 и 2?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню