【发布时间】:2021-05-11 17:56:57
【问题描述】:
我有临时表#A,其中包含:
ID RevID Designation ParentID Amount
--------------------------------------------------------
100 500 Test1 300 5000
250 500 Test2 360 5000
410 500 Test3 580 5000
我还有一个临时表#B,其中包含:
ID RevID Text Amount
--------------------------------------
900 500 Test100 6500
我要做的是插入表#B 中的内容,而不会由于基于 RevID 的左连接而重复行。我只关心将表 #B 中的 RevID 和 Amount 引入表 #A 中的新行,并保持其他列与表 #A 中具有匹配 RevID 的任何行相同。
我正在尝试通过以下方式插入此表:
INSERT INTO #A (ID, RevID, Designation, ParentID, Amount)
SELECT DISTINCT
a.ID,
a.RevID,
b.Text,
a.ParentID,
b.Amount
FROM
#B b
LEFT JOIN
#A a ON b.RevID = a.RevID
我的理想结果如下,它将表#B 中的一行添加到表#A 中,但由于表#A 中的三行具有相同的 RevID,因此没有添加三次:
ID RevID Designation ParentID Amount
100 500 Test1 300 5000
250 500 Test2 360 5000
410 500 Test3 580 5000
100 500 Test100 300 6500
我认为我不能使用联合,因为表 #A 可能包含其他 RevID,而且表 #B 不包含与表 #A 相同的列,因此我需要与表 #B 连接,并且表 #B 中存在匹配 RevID,只将该行从表#B 带入表#A 一次。
【问题讨论】:
-
JOIN和UNION ALL? -
为什么
text在您的SELECT中而不是您的预期结果或样本数据? -
那是我的错字,我已经在表格#B中更正了
标签: sql sql-server tsql insert sql-insert