我正在开发一个在线问答应用。
我正在从数据库中获取记录。
我有一个SQL数据库,其中包含10个集合,每个集合包含100个问题,总共有1000个问题。我该如何从每个集合中随机选择20个问题呢?也就是说,我该如何从每个集合中选择2个(根据请求)随机问题呢?
我正在开发一个在线问答应用。
我正在从数据库中获取记录。
我有一个SQL数据库,其中包含10个集合,每个集合包含100个问题,总共有1000个问题。我该如何从每个集合中随机选择20个问题呢?也就是说,我该如何从每个集合中选择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
rowNum <= 2
来获取前两个。 - Andomarwhere rNum<=20
选择每个主题起始的20个问题。因此,您可以编写where rNum<=2
。 - valex如果您想从每个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()