【问题标题】:How to select 20 random questions from each set in sql?如何从sql中的每个集合中选择20个随机问题?
【发布时间】:2012-12-19 06:00:26
【问题描述】:

我正在处理在线问题申请。

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

我有 SQL database10 组中持有 1000 个问题。我的意思是每组包含 100 个问题。如何从每组中抽取 20 个随机问题?我的意思是如何从每组中选择 2(根据要求)随机问题?

【问题讨论】:

    标签: c# sql sql-server-2008


    【解决方案1】:

    试试:

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

    更多关于NEWID()

    【讨论】:

    • 这将检索 20 个随机行,而不是每组 2 个随机行。
    【解决方案2】:

    如果您需要从每个组中获得 20 个随机问题,这里是 SQLFiddle exampleSetNum这里是集合ID

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

    【讨论】:

    • +1 你需要rowNum &lt;= 2,每组前两个
    • @Andomar where rNum&lt;=20 每组选择 20 个问题作为所需的主题启动器。所以你可以写where rNum&lt;=2
    • 问题以“我的意思是如何从每组中选择 2 个(根据请求)随机问题结束?”但在那之前的那一行肯定是模棱两可的。
    【解决方案3】:

    如果你想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()
    

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      相关资源
      最近更新 更多