sql >> データベース >  >> RDS >> Sqlserver

SQLServerのINSERTINTOSELECTクエリでの重複を避けてください

    NOT EXISTSを使用する :

    INSERT INTO TABLE_2
      (id, name)
    SELECT t1.id,
           t1.name
      FROM TABLE_1 t1
     WHERE NOT EXISTS(SELECT id
                        FROM TABLE_2 t2
                       WHERE t2.id = t1.id)
    

    NOT INを使用する :

    INSERT INTO TABLE_2
      (id, name)
    SELECT t1.id,
           t1.name
      FROM TABLE_1 t1
     WHERE t1.id NOT IN (SELECT id
                           FROM TABLE_2)
    

    LEFT JOIN/IS NULLの使用 :

    INSERT INTO TABLE_2
      (id, name)
       SELECT t1.id,
              t1.name
         FROM TABLE_1 t1
    LEFT JOIN TABLE_2 t2 ON t2.id = t1.id
        WHERE t2.id IS NULL
    

    3つのオプションのうち、LEFT JOIN/IS NULL 効率が低下します。詳細については、このリンクを参照してください。



    1. 1つの値について複数の列をチェックする

    2. SQL INSERT構文–DBMSによってリストされます

    3. MSAccessユーザーのための10の時間節約のヒント

    4. チーム内でOracleのストアドプロシージャを操作するためのツール?