SQL Server,用于每条指令

时间:2010-11-24 15:59:29

标签: sql sql-server ssms

  1. 客户(身份证,姓名......)
  2. 产品(id,名称......)
  3. Clients_产品(client_id,product_id)
  4. 我添加了10个客户端,我需要更新连接表(clients_products)并为每个产品和每个客户端添加新记录。

    有没有办法在SQL Server管理工作室或其他什么地方进行双循环?

    然后我删除了10行,但我想创建这10行并直接将它们与所有产品连接起来。 (请改写最后一句 - 毫无意义)

    任何帮助? THX

    我可以使用vb .net以编程方式执行此操作,但我认为有任何方法可以实现此目的。

4 个答案:

答案 0 :(得分:1)

INSERT INTO Clients_Products
SELECT c.Id, p.Id
FROM Clients c
JOIN Products p on 1=1
WHERE c.Name in ('NEW CLIENT 1', 'NEW CLIENT 2')

答案 1 :(得分:1)

这需要交叉连接

INSERT INTO clients_products (client_id, product_id)
SELECT c.ID, p.ID
FROM Clients c
CROSS JOIN Products p
LEFT JOIN clients_products cp
    on c.client_id and p.product_id
WHERE cp.client_id is null and p.product_id is null

答案 2 :(得分:0)

我不确定我理解你在说什么,但听起来你想要在SQL中循环记录集。 见:

http://msdn.microsoft.com/en-us/library/ms180152.aspx

答案 3 :(得分:0)

如果我正确地理解了你的问题,那么你要求两个表格的笛卡尔联合:

insert into clients_products  
select
  clients.id,products.id 
from clients
  cross join products