SELECT ITEMID FROM IMPORT_DOCUMENTS
WHERE ITEMID IN(SELECT ITEM_ID FROM PUBLIC_FOLDER_DOCUMENTS WHERE FOLDER_ID = 96)
AND (ABS(CAST((BINARY_CHECKSUM(*) * RAND(734014465)) as int))% 369279) < 506
通常、ORDER BY NEWID()
SQL Server 2008 でランダム サンプルを取得するために使用しますが、この場合、クライアントはRAND([seed])
関数を使用してサンプルを取得するように要求し、後で再度複製することができます。
上記のクエリは、1 つのサンプル グループを生成するために使用したものです。369,279 レコードのグループから約 500 行を取得する必要がありました。(これは 369279 & 506 の値を説明しています)
今日の早い段階でこれを実行し、探している 501 レコードを受け取りました。この同じ結果を何度も繰り返しました。これを後で実行すると、別の 527 レコードのセットを受け取ります。私の理解では、このクエリの結果は静的ですが、明らかにそうではありません。使用したクエリを考えると、これらの結果がどのように変化したかを誰か説明できますか?
FOLDER_ID = 96
で定義される母集団はまったく変わっていないことに注意してください。
ありがとうございました!