从sql server中的表中获取随机数据?

时间:2012-10-25 16:53:03

标签: sql-server-2008

SELECT TOP 10 * 
FROM Questions TABLESAMPLE (100 ROWS) 
order by NEWID()

每次返回相同的10条记录,但它们的顺序不同。如何每次获得一组不同的10个随机值?

3 个答案:

答案 0 :(得分:3)

如果你只想要10个随机行,这对你有用:

SELECT TOP 10 *
FROM Questions
ORDER BY NEWID()

您不需要TABLESAMPLE (100 ROWS)此处


为了将结果保存到评论所指示的另一个表中,如果第二个表存在,您将能够轻松地执行此操作。然后你可以:

INSERT INTO RandomQuestions(col1, col2, col3, ...)
SELECT TOP (10) q.col1, q.col2, q.col3, ...
FROM Questions AS q
ORDER BY NEWID()

答案 1 :(得分:1)

我相信您正在寻找您的随机记录。您可以使用派生表(我在下面对子查询进行别名)来执行此操作:

select *
from (
    -- Derived table to get 10 random rows
    select top 10 * 
    from Questions
    order by newid() -- Here we are randomizing the entire table.
) as a
order by a.QuestionID -- Here is where you can order your 10 random records.

如果您确实需要随机记录,请不要使用tablesample documentation

  

如果您真的想要随机抽取单个行,请修改您的查询以随机过滤掉行,而不是使用TABLESAMPLE。

答案 2 :(得分:0)

SELECT TOP ### FROM Questions TABLESAMPLE order by NEWID()

将###替换为您想要的行数。这是基于OP的想法。

相关问题