MySQL копировать данные из таблицы в таблицу 2 без дублирования данных и добавлять новые строки - PullRequest
0 голосов
/ 25 мая 2018

У меня есть 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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Используйте 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 голосов
/ 25 мая 2018

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

  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
    
...