2014-01-15 104 views
1

產品和ProductRetailer表通過ProductId字段連接。具有ProductId和ProdcutName列的產品表保留超過400條記錄。 ProductRetailer表的字段是ProductId,RetailerId和Type。SQL INSERT基於連接表中所有記錄的查詢

INSERT INTO ProductRetailer (ProductId,RetailerId,Type) VALUES(1,120,2) 
INSERT INTO ProductRetailer (ProductId,RetailerId,Type) VALUES(2,120,2) 
INSERT INTO ProductRetailer (ProductId,RetailerId,Type) VALUES(3,120,2) 

上面的示例查詢插入了分別爲零售商'120'的ProductId'1','2','3'的記錄。 Products表中有超過400種產品。我想寫一個INSERT查詢,爲Products表中的所有ProductIds添加RetailerId = 120的記錄。我不能一個一個做我能嗎?

+1

'insert ... select ...'? – Sebas

+0

您使用的是什麼RDBMS? – Dan

+0

sql server express – Jude

回答

2

當然,只是一個INSERT/SELECT

INSERT INTO ProductRetailer (ProductId,RetailerId,Type) 
    SELECT ProductId, 120, 2 FROM Products 
    WHERE ProductId NOT IN (
     SELECT ProductId FROM ProductRetailer 
     WHERE RetailerId = 120 
    ) 

NOT IN條款將確保該零售商也不會INSERT重複。

+0

到目前爲止最好的一個,防止重複。謝謝 – Jude

2

您可以insert-select嘗試這樣

Insert into productretailer (ProductId,RetailerId,Type) 
Select productid, '120', '2' from products 
相關問題