从多行插入多行

时间:2015-06-15 20:17:30

标签: sql sql-server sql-insert

如何在不使用游标的情况下从多个行插入多行?

示例:

假设我有三张桌子:

  1. CustomersCustomerIdName
  2. GiftsGifIdGiftName
  3. GiftsToCustomersGiftIdCustomerId
  4. 表客户和礼品可以包含多行。

    现在让我说我在表Gifts中有3个礼物,我想把它交给我的所有客户。

    有没有办法在不使用CustomersGifts表格的游标/循环的情况下执行此操作?

    我不是在寻找像

    这样的东西
    insert into GiftsToCustomers 
        Select GiftId, @CustomerId 
        from Gifts
    

    我必须在顾客/礼物的每一行都这样做。

1 个答案:

答案 0 :(得分:3)

交叉联接应该可以解决问题 - 您可以使用它来匹配gifts中每一行与custmers中的每一行:

INSERT INTO GiftsToCustomers (GiftId, CustomerId)
SELECT      GiftId, CustomerId
FROM        Gifts
CROSS JOIN  Customers