7
UPDATE table2 
SET table2.col1 = table1.col1, 
table2.col2 = table1.col2,
    table2.col3 = table2.col3,
...
FROM table1, table2 
WHERE table1.memberid = table2.memberid

9〜10行あり、共通の列名SCRIPT_IDを使用してSET句を実装する方法を理解してください。これにより、将来スクリプトを使用して同じテーブルを更新できます。

以下は、表の抜粋です。

____     _____________   __________________  _____     _     _____
 999     EMS02075SVC     Host Controller     15099     3     60000 
1000     EMS02075SVC     DSM Controller      15099     1     60000 
1001     EMS02075WEB1    Application Server   4447     1     60000
4

1 に答える 1

10

これは、ソース テーブルと宛先テーブルが同一であり、同じ memberid を持っている場合に機能します (これは主キーであると想定しています)。

UPDATE destination 

SET destination.col1 = source.col1, 
destination.col2 = source.col2,
destination.col3 = source.col3,
...
FROM table1 AS source
JOIN table2 AS destination ON source.memberid = destination.memberid

ソース テーブルと宛先テーブルが同一であるが、宛先にない新しい行 (レコード) がソースにある場合は、selectiveINSERTステートメントが必要になります。

INSERT INTO table2 (
    col1,
    col2,
    col3,
    ...
) SELECT col1, col2, col3, ... 
FROM table1 
WHERE NOT EXISTS (
    SELECT memberid 
    FROM table2 
    WHERE table2.memberid = table1.memberid)

上記は、宛先テーブルにまだ存在しないレコードのみを挿入します。SQL Server 2008 を使用しているので、MERGE両方の状況を処理するステートメントと、1 つのコード セットでコード化するその他すべてを処理するステートメントを試してみることができます。

于 2012-11-30T15:42:59.160 に答える