Sql 从多行中插入多行

Sql 从多行中插入多行,sql,sql-server,sql-insert,Sql,Sql Server,Sql Insert,如何在不使用光标的情况下从另一个具有多行的表中插入多行 例如: 假设我有三张桌子: 客户(客户ID,名称) GiftName(GifId,GiftName) GiftsToCustomers(GiftId,CustomerId) 表“客户”和“礼品”可以包含多行 现在让我们假设我在表中有3件礼物礼物,我想把它送给我的所有客户 有没有一种方法可以不通过客户或礼品表使用光标/循环来执行此操作 我不是在找这样的东西 insert into GiftsToCustomers Select Gi

如何在不使用光标的情况下从另一个具有多行的表中插入多行

例如:

假设我有三张桌子:

  • 客户
    客户ID
    名称
  • GiftName
    GifId
    GiftName
  • GiftsToCustomers
    GiftId
    CustomerId
  • 表“客户”和“礼品”可以包含多行

    现在让我们假设我在表中有3件礼物
    礼物
    ,我想把它送给我的所有客户

    有没有一种方法可以不通过
    客户
    礼品
    表使用光标/循环来执行此操作

    我不是在找这样的东西

    insert into GiftsToCustomers 
        Select GiftId, @CustomerId 
        from Gifts
    

    我必须在customers/gifts中的每一行上执行此操作。

    交叉连接应该可以做到这一点-您可以使用它将
    gifts中的每一行与
    custmers中的每一行进行匹配:

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

    非常感谢。这就是我要找的。我知道这一定是比使用游标更好的方法。