SQL INSERT查询基于连接表中的所有记录

时间:2014-01-15 17:55:21

标签: sql sql-server

Products和ProductRetailer表通过ProductId字段连接。 Products表具有ProductId和ProdcutName列,可保留400多条记录。 ProductRetailer表的字段是ProductId,RetailerId和Type。

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的记录。我不能一个接一个地做到吗?

2 个答案:

答案 0 :(得分:2)

您可以尝试insert-select这样的

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

答案 1 :(得分: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重复。