如何在SQL中从每个数据集中选择20个随机问题?

8

我正在开发一个在线问答应用。

我正在从数据库中获取记录。

我有一个SQL数据库,其中包含10个集合,每个集合包含100个问题,总共有1000个问题。我该如何从每个集合中随机选择20个问题呢?也就是说,我该如何从每个集合中选择2个(根据请求)随机问题呢?

3个回答

3

尝试:

SELECT TOP 20 * FROM [YourTable] ORDER By NEWID()

更多关于NEWID()的信息。


3
这将检索出20行随机数据,而不是每个集合中的2行随机数据。 - Andomar

2

如果你需要从每个组中获取20个随机问题,这里有一个SQLFiddle示例。这里的SetNum是一个集合ID。

select * from 
(
select t.*, 
ROW_NUMBER() 
over (partition by setNum order by NewId()) rNum from t
) t2 where rNum<=20

+1 对于每个集合,你需要 rowNum <= 2 来获取前两个。 - Andomar
@Andomar where rNum<=20 选择每个主题起始的20个问题。因此,您可以编写where rNum<=2 - valex
问题以“我的意思是,我如何从每组中选择2个(根据要求)随机问题?” 结束。但这句话之前的内容绝对含糊不清。 - Andomar

1

如果您想从每个SET中获取2个随机问题,请尝试这个...

SELECT TOP 2 * FROM (SELECT * FROM [YourTable] WHERE SET_ID = 1) ORDER By NEWID()
UNION
SELECT TOP 2 * FROM (SELECT * FROM [YourTable] WHERE SET_ID = 2) ORDER By NEWID()
UNION
.
.
.
.
UNION
SELECT TOP 2 * FROM (SELECT * FROM [YourTable] WHERE SET_ID = 10) ORDER By NEWID()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接