我想插入行,如果它们不存在(对于特定值)在此表中。SQL查询:插入,如果不是已经存在从2表
我的表,其中我插入是insertTable:
date (date)
created (datetime)
category (varchar)
companyId (int)
price (decimal 6,3)
我从内选择我行的两个表之间做加盟:
declare @currentDateTime datetime = getDate()
declare @currentDate date = getDate()
INSERT INTO insertTable (date, created, category, companyId, price)
SELECT @currentDate, @currentDateTime, '30 Day', company.companyId, product.price
FROM product
INNER JOIN company
ON product.companyid = company.companyid
WHERE product.price >= 0.31 AND ... other conditions on company fields ...
AND NOT EXISTS(
SELECT * FROM insertTable WHERE insertTable.price = product.price
AND insertTable.date = @currentDateTime
AND insertTable.companyid = product.companyid
AND LTRIM(RTRIM(insertTable.category)) = '30 Day'
)
什么我做错了吗?
谢谢
- 戈登Linoff后编辑评论。 我在insertTable中插入了select的结果。 我的问题是,我得到insertTable中的重复。
如果insertTable有
2014-09-26 | 2014-09-26 02:25:00 | 30 Day | 32650 | 0.600
我的选择将返回像
2014-09-26 | 2014-09-26 02:36:00 | 30 Day | 32650 | 0.600
东西但是我已经有companyID和价格在插入表
我有一种感觉,我失去了一些东西在我的岗位......我编辑解释我的问题 – Greg 2014-09-26 18:29:43
你知道[ **'MERGE' **](http://msdn.microsoft.com/en-us/library/bb510625.aspx)?听起来像是其中之一的好例子。来自MSDN:_“根据与源表的连接结果对目标表执行操作。例如,您可以通过在一个表中插入,更新或删除行来同步两个表,并根据另一个表中的差异进行同步。“_ – stakx 2014-09-26 19:15:02
@stakx谢谢stakx。Rajesh提出了我不知道的解决方案。谢谢 – Greg 2014-09-26 19:24:15