bugfix> mysql > 投稿

私は2つのテーブルを持っています:

表1-IP、SN、バージョン、日付、作業中

表2-IP、SN、Vesrion

table2には、table1からまだテーブルにないIPのみを追加します。そして、table1に従ってSN +バージョンを更新します(追加した新しい行のみ)

私はここで別のテーブルから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 件
  • このジョブを実行する2つの個別のクエリを次に示します。

    存在しないレコードを表2に追加します

    INSERT INTO table2 (SELECT IP, SN, Vesrion FROM table1 where table1.IPnot in (select IPfrom table2));
    
    

    既存のデータを更新する

    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
    
    

  • 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);
    
    

あなたの答え