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)
ここは必要ありません
コメントで示されているように結果を別のテーブルに保存するには、2番目のテーブルが存在する場合にこれを簡単に行うことができます。次に、次のことができます。
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の考えに基づいています。