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

毎回同じ 10 件のレコードが返されますが、それらの順序は異なります。毎回異なる 10 個のランダム値のセットを取得するにはどうすればよいですか?

4

3 に答える 3

3

ランダムな行を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()
于 2012-10-25T16:57:22.600 に答える
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に従って、本当にランダムなレコードが必要な場合は使用しないでください:

個々の行のランダム サンプルが本当に必要な場合は、TABLESAMPLE を使用する代わりに、行をランダムに除外するようにクエリを変更します。

于 2012-10-25T17:01:21.490 に答える
0
SELECT TOP ### FROM Questions TABLESAMPLE order by NEWID()

###を必要な行数に置き換えます。これはOPの考えに基づいています。

于 2012-10-25T16:56:13.317 に答える