基于另一个插入一个表

时间:2016-03-22 16:49:42

标签: sql sql-server ssms sql-server-express

我在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中多部分标识符无法绑定的错误。

我确信有一个解决方案,但我只是看不出它是什么。任何建议?如果有什么我不能解释清楚,我会很乐意澄清它,我对编程游戏相对较新

1 个答案:

答案 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条款中就知道了。