2

私は2つの同一のテーブルを持っています.1つは更新され、もう1つは更新されないので、テーブル2の既存のレコードの更新をチェックし、存在しない場合はテーブル1からテーブル2にレコードを挿入するストアドプロシージャを書きたいと思います.

Table 1

    | Field1 | Field2 | Field3 |
    | ------ | ------ | -----: |
    |  A     |  1     |   $10  |
    |  B     |  2     |   $20  |
    |  C     |  2     |   $21  |


Table 2

    | Field1 | Field2 | Field3 |
    | ------ | ------ | -----: |
    |  A     |  3     |   $13  |
    |  B     |  2     |   $20  |

このサンプルでストアド プロシージャが行うことは、表 2 の行 (B) を表 1 のデータで更新し、行 (C) を表 2 に挿入することです。

4

2 に答える 2

3

更新部分については、データベースの ID または任意の識別子フィールドを使用して確認できます。

UPDATE t2 
SET t2.field2 = t1.field2 and t2.field3 = t1.field3 
FROM table2 AS t2
INNER JOIN table1 AS t1 
      ON t2.field1=t1.field1

そして、更新ステートメントの後に上記の返信からの挿入部分を追加するだけです。

于 2013-09-03T10:15:05.920 に答える
2

このようなことを考えたことはありますか?

INSERT INTO Table2
(
     Field1
    ,Field2
    ,Field3
)
SELECT 
     Field1
    ,Field2
    ,Field3 
FROM Table1 
WHERE NOT EXISTS (
                  SELECT
                       Field1
                      ,Field2
                      ,Field3 
                  FROM Table2
                  )

もちろん、ID シードがある場合は、代わりに MAX(Value) を使用します。

于 2013-09-03T10:01:01.913 に答える