SELECT TOP 10 *
FROM Questions TABLESAMPLE (100 ROWS)
order by NEWID()
它每次返回相同的 10 条记录,但它们的顺序不同。如何每次获得一组不同的 10 个随机值?
SELECT TOP 10 *
FROM Questions TABLESAMPLE (100 ROWS)
order by NEWID()
它每次返回相同的 10 条记录,但它们的顺序不同。如何每次获得一组不同的 10 个随机值?
如果您只想要 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()
我相信您正在寻找订购随机记录。您可以使用派生表来执行此操作(我在下面为子查询起别名):
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
,如果您确实需要随机记录,请不要使用:
如果您真的想要单个行的随机样本,请修改您的查询以随机过滤掉行,而不是使用 TABLESAMPLE。
SELECT TOP ### FROM Questions TABLESAMPLE order by NEWID()
用你想要的行数替换###。这是基于OP的想法。