gpt4 book ai didi

sql - 将一个表中的一行连接到另一个表中的 n 随机行

转载 作者:行者123 更新时间:2023-12-04 11:44:53 24 4
gpt4 key购买 nike

是否可以在 SQL Server 中进行连接,将表 A 中的每一行连接到另一个表中的 n 随机行?例如,假设我有一个 Customer 表、一个 Product 表和一个 Order 表。我想将每个客户加入 5 个随机产品并将这些行插入到订单表中。 (每个客户都应该加入他自己的 5 个随机行,我不希望所有客户都加入相同的 5 行)。

这可能吗?我正在使用 SQL Server 2005,如果解决方案是特定的,那就没问题了。

这是一个奇怪的要求,但我基本上是在制作一个小型数据生成器来生成一些随机数据。

最佳答案

看看这样的

DECLARE @Products TABLE(
id Int,
Prod VARCHAR(10)
)

DECLARE @Customer TABLE(
id INT
)

INSERT INTO @Products SELECT 1, 'a'
INSERT INTO @Products SELECT 2, 'b'
INSERT INTO @Products SELECT 3, 'c'
INSERT INTO @Products SELECT 4, 'd'

INSERT INTO @Customer SELECT 1
INSERT INTO @Customer SELECT 2
--use a cross product select, BUT apply a random order number per customer,
--and only select the 'TOP N' items you require.
;WITH Vals AS (
SELECT c.id CustomerID,
p.id ProductID,
p.Prod,
ROW_NUMBER() OVER( PARTITION BY c.ID ORDER BY NEWID()) RowNumber
FROM @Customer c,
@Products p
)
SELECT *
FROM Vals
WHERE RowNumber <= 2

关于sql - 将一个表中的一行连接到另一个表中的 n 随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3051732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com