我想插入行,如果它們不存在(對於特定值)在此表中。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