SQL Serverでは、1つのフィールドを選択して各行に乱数を割り当てるだけです。 1M行以上がありますので、乱数で並べ替え、ランダムなサンプルとして上位50Kを選択します。sqlのrand()関数の使用に問題がある
私が行う場合:
Select x, rand()*(50000-1)+1)
From Y
私が欲しいxの全てを取得し、彼らそれぞれが同じ乱数を持っています。
SQL Serverでは、1つのフィールドを選択して各行に乱数を割り当てるだけです。 1M行以上がありますので、乱数で並べ替え、ランダムなサンプルとして上位50Kを選択します。sqlのrand()関数の使用に問題がある
私が行う場合:
Select x, rand()*(50000-1)+1)
From Y
私が欲しいxの全てを取得し、彼らそれぞれが同じ乱数を持っています。
あなただけランダムに並べ替えるために乱数を使用する場合は、代わりに乱数フィールドをスキップし、あなたはおそらく、任意の値を割り当てる必要はありません
ORDER BY NEWID()
を使用することができ、擬似ランダムでわずか順TOP
を値と取る:
SELECT TOP 50000 X FROM Y ORDER BY NEWID()
ありがとうございます。どのように簡単に説明できますか? NewIDは私にとって初めてのものです – user6114185
@ user6114185: 'NEWID()'はGUIDを返しますので、 'ORDER BY'が働くように新しいGUIDが各行に一時的に割り当てられます。 GUIDは、すべての目的と目的で、決して繰り返されないことが保証されており、とにかく順番に生成されるわけではないので、基本的にはそれが十分にランダムであると信じることができます。 –
はちょうどあなたがあなたの番号を生成しているときに、FLOORまたは何か他のものを使用していない場合は「+1」の後に括弧を取ることを忘れないでください。 – Dresden