如何在不使用游标的情况下从多个行插入多行?
示例:
假设我有三张桌子:
Customers
(CustomerId
,Name
)Gifts
(GifId
,GiftName
)GiftsToCustomers
(GiftId
,CustomerId
)表客户和礼品可以包含多行。
现在让我说我在表Gifts
中有3个礼物,我想把它交给我的所有客户。
有没有办法在不使用Customers
或Gifts
表格的游标/循环的情况下执行此操作?
我不是在寻找像
这样的东西insert into GiftsToCustomers
Select GiftId, @CustomerId
from Gifts
我必须在顾客/礼物的每一行都这样做。
答案 0 :(得分:3)
交叉联接应该可以解决问题 - 您可以使用它来匹配gifts
中每一行与custmers
中的每一行:
INSERT INTO GiftsToCustomers (GiftId, CustomerId)
SELECT GiftId, CustomerId
FROM Gifts
CROSS JOIN Customers