【问题标题】:Insert multiple rows from multiple rows从多行插入多行
【发布时间】:2015-06-15 20:17:30
【问题描述】:

如何在不使用游标的情况下从另一个包含多行的表中插入多行?

例子:

假设我有三个表:

  1. Customers (CustomerId, Name)
  2. Gifts (GifId, GiftName)
  3. GiftsToCustomers (GiftId, CustomerId)

客户和礼物表可以包含多于一行。

现在假设我的桌子上有 3 份礼物 Gifts,我想把它送给我所有的顾客。

有没有一种方法可以在不使用光标/循环遍历 CustomersGifts 表的情况下做到这一点?

我不是在寻找类似的东西

insert into GiftsToCustomers 
    Select GiftId, @CustomerId 
    from Gifts

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

【问题讨论】:

    标签: sql sql-server sql-insert


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。这就是我一直在寻找的。我知道它必须是比使用游标更好的方法。
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2012-08-14
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多