我有兩個表。我必須根據第一張表和INVE_KEY
,EVEN_KEY
(兩者的組合必須是唯一的)的記錄插入或更新第二張表。根據第一個表中的行插入或更新第二個表中的行
第一表= @ TBL1
第二表= @ TBL2
實施例1:
如果第二表alredy具有INVE_KEY = 1,EVEN_KEY = 2,和第一表具有 INVE_KEY = 1,EVEN_KEY = 2,比此行僅在第二個表中更新(列爲 QUA)。
實施例2:
如果第二表沒有INVE_KEY = 3,EVEN_KEY = 1,則該行會 被插入到從第一個表的第二表。
我的問題是,我不知道如何做從表到表的插入,並同時檢查每個記錄是否存在於第二個表中?
第一表:
+----------+----------+-----+
| INVE_KEY | EVEN_KEY | QUA |
+----------+----------+-----+
| 1 | 1 | 3 |
| 2 | 1 | 4 |
| 3 | 1 | 5 |
| 4 | 1 | 6 |
+----------+----------+-----+
第二表:
+----------+----------+-----+
| INVE_KEY | EVEN_KEY | QUA |
+----------+----------+-----+
| 3 | 1 | 0 |
| 4 | 1 | 0 |
+----------+----------+-----+
更新第二表,預期的結果後:
+----------+----------+-----+
| INVE_KEY | EVEN_KEY | QUA |
+----------+----------+-----+
| 1 | 1 | 3 |(inserted)
| 2 | 1 | 4 |(inserted)
| 3 | 1 | 5 |(updated QUA)
| 4 | 1 | 6 |(updated QUA)
+----------+----------+-----+
創建和數據爲兩個表:
declare @tbl1 table
(
INVE_KEY INT,
EVEN_KEY INT,
QUA INT
)
declare @tbl2 table
(
INVE_KEY INT,
EVEN_KEY INT,
QUA INT
)
insert into @tbl1(inve_Key, even_Key, qua)
values(1, 1, 3),(2,1,4),(3,1,5),(4,1,6)
insert into @tbl2(inve_Key, even_Key, qua)
values(3,1,0),(4,1,0)
做在2個語句。首先 - >更新現有記錄(嘗試谷歌的UPDATE FROM語法);第二個 - >插入缺失的記錄 –
爲什麼不只是先截斷第二個表格,然後用第一個表格的預期結果填充整個表格。 –
你看了MERGE嗎? https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql –