我在ssms中有两个表,我希望将一个数据放入另一个表中,但我宁愿不包括我已经添加的一些数据。
表一是来自特定供应商的数据,它包括我想要抓取的ID和数量
表二列出了我所有供应商提供的组合数据,其中每个产品都有不同的ID,数量和数量单位(我们的一些供应商分批销售,其他商品为Square Square)。
我试图使用此代码:
insert into Table2(DistinctID, Quantity,Units)
Select DistinctID, Pieces, 'Pieces' from Table1
Where DistinctID <> Table1.DistinctID
然而,当我运行它时,没有值添加到表中。我在想这是因为该声明每次看起来都是相同的唯一ID,所以我认为我会尝试澄清我的Where声明:
Where Table2.DistinctID <> Table1.distinctID
除非我这样做,否则我会遇到关于table2中多部分标识符无法绑定的错误。
我确信有一个解决方案,但我只是看不出它是什么。任何建议?如果有什么我不能解释清楚,我会很乐意澄清它,我对编程游戏相对较新
答案 0 :(得分:3)
我会尝试NOT EXISTS条款
insert into Table2(DistinctID, Quantity, Units)
select t1.DistinctID, t1.Pieces, 'Pieces' from Table1 t1
where not exists
(select null
from table2 t2
where t2.DistinctID = t1.DistinctID)
因为在您第一次尝试时,您会DistinctID <> Table1.DistinctID
。但DistinctId
都来自table1
(并且值与其自身永远不同)。
在第二次尝试中,Table2
不在选择部分中,因此未知。这不是因为它在insert
中的select
条款中就知道了。