SELECT TOP 10 *
FROM Questions TABLESAMPLE (100 ROWS)
order by NEWID()
每次返回相同的10条记录,但它们的顺序不同。如何每次获得一组不同的10个随机值?
答案 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的想法。