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

あるテーブルから別のテーブルへの更新と挿入

    Merge table2 as target
    using table1  as source
    on
    target.id=source.id
    When matched 
    Then
    update 
    set target.id=source.id,
        target.name=source.name
    When not matched by Target Then
    INSERT (id, name) VALUES (id, name);
    

    Merge ステートメントにはいくつかの問題があるため、注意 ..

    さらに、以下のようにマージを 2 つの別個の DML ステートメントとして使用することをお勧めします..

    insert into table2
    select * from table1 t1 where not exists (select 1 from table2 t2 where t2.id=t1.id)
    
    update t2
    set 
    t2.id=t1.id,
    t2.name=t1.name
    from 
    table1 t1
    join
    table2 t2
    on t1.id=t2.id
    

    Paul White が述べている理由 ここで彼の詳細な回答 ..



    1. PHPでの半正矢関数のSQL呼び出しの最適化

    2. Oracle 11gで大文字と小文字を区別するようにテーブル名と列を設定する方法は?

    3. MySQLタイムスタンプ列の値をSqlAlchemyで挿入します

    4. Oracle SQL Developerでrefcursorの結果/出力を確認するにはどうすればよいですか?