mugyu
8/13/2014 - 7:55 AM

SQLで元情報テーブルから目的のテーブルへ INSERT

SQLで元情報テーブルから目的のテーブルへ INSERT

SQLで元情報テーブルから目的のテーブルへ INSERT

    INSERT INTO dest ( column, ... ) SELECT column, ... FROM source;

sourceテーブル から destテーブルへ column, ... カラムをコピーする。


ユニークキーが被らないようにする場合や、 一度INSERTした情報を再びINSERTしないようにるガード

    INSERT INTO dest (
        uniq_key, column, ...
    ) SELECT uniq_key, column, ... FROM source
        WHERE NOT EXISTS (
            SELECT uniq_key FROM dest WHERE dest.uniq_key = source.dest_key
        );

上記の例では dest に source と 同じ uniq_key が存在すると、その行を NOT EXISTS で source から除外するようにしています。