1. ホーム
  2. sql

[解決済み] SQL Server テーブルからランダムな n 行を選択する

2022-03-16 05:13:13

質問

SQL Server のテーブルに約 5 万行の行があります。そのうちの約5,000行をランダムに選択したいのです。乱数カラムを持つ一時テーブルを作成し、そこに私のテーブルをコピーし、一時テーブルをループして、各行を RAND() そして、そのテーブルから、乱数列が < 0.1 であるものを選択します。可能であれば、1つのステートメントで、これを行うより簡単な方法を探しています。

この記事 を使用することを提案します。 NEWID() という関数があります。それは期待できそうですが、ある割合の行を確実に選択する方法がわかりません。

どなたかやったことのある方いらっしゃいますか?何かアイデアはありますか?

解決方法は?

select top 10 percent * from [yourtable] order by newid()

大きなテーブルに関する "pure trash" のコメントに対して:パフォーマンスを向上させるために、このようにすることができます。

select  * from [yourtable] where [yourPk] in 
(select top 10 percent [yourPk] from [yourtable] order by newid())

このコストは、値のキースキャンと結合コストになりますが、選択率が小さい大きなテーブルでは妥当なところでしょう。