每个项目选择X个随机用户

时间:2012-10-14 14:47:30

标签: sql sql-server sql-server-2008 random

我有两张桌子:Items& Users

Items包含ItemID, and Num_Users
Users包含UserID

对于每个ItemID,我需要根据Num_Users列中指定的值随机选择一些用户。

我在SQL Fiddle上创建了一组示例数据。

1 个答案:

答案 0 :(得分:5)

一种方式。 SQL Fiddle

SELECT Items.[ItemID],
       UserID
FROM   Items
       OUTER APPLY (SELECT TOP ([Num_Users]) *
                    FROM   Users
                    ORDER  BY Newid()) A 

您还可以使用CRYPT_GEN_RANDOM(4)代替Newid()获得更高程度的随机性,但在非最新版本的SQL Server 2008上有some issues with this