【发布时间】:2012-12-19 06:00:26
【问题描述】:
我正在处理在线问题申请。
我正在从数据库获取记录。
我有 SQL database 在 10 组中持有 1000 个问题。我的意思是每组包含 100 个问题。如何从每组中抽取 20 个随机问题?我的意思是如何从每组中选择 2(根据要求)随机问题?
【问题讨论】:
标签: c# sql sql-server-2008
我正在处理在线问题申请。
我正在从数据库获取记录。
我有 SQL database 在 10 组中持有 1000 个问题。我的意思是每组包含 100 个问题。如何从每组中抽取 20 个随机问题?我的意思是如何从每组中选择 2(根据要求)随机问题?
【问题讨论】:
标签: c# sql sql-server-2008
【讨论】:
如果您需要从每个组中获得 20 个随机问题,这里是 SQLFiddle example。 SetNum这里是集合ID
select * from
(
select t.*,
ROW_NUMBER()
over (partition by setNum order by NewId()) rNum from t
) t2 where rNum<=20
【讨论】:
rowNum <= 2,每组前两个
where rNum<=20 每组选择 20 个问题作为所需的主题启动器。所以你可以写where rNum<=2
如果你想2每个 SET 的随机问题,试试这个...
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()
【讨论】: