私はSQL Server 2008を使用しています。NEWID()を使用して2つのランダムな行を返す方法は?
2つのランダムなBikeIDをBikesというテーブルから取り出すクエリがあります。テーブルには、次のようになります。
BikeID BikeName
1 Bob
2 Cindy
3 Carl
4 Joe
5 Jane
私はこのような2つのランダムBikeIDsを引き出すためにNEWID()関数を使用します。
SELECT TOP 2 BikeID
FROM Bikes
ORDER BY NEWID()
私の結果は次のようになります。
Row - BikeID
1 5
2 1
Row - BikeID
1 3
2 4
Row - BikeID
1 2
2 5
Row - BikeID
1 3
2 3
マイ問題は、重複が発生していることです。つまり、同じ番号が2回返されます。最後の例の結果セットを参照してください。 NEWID()が正確に同じ番号を2回返すかどうかはわかりません。そうでなければ、私はどこかで不具合を起こさなければならない。
これは実際に私が生産している結果ではありません。これらの種類の結果は、このクエリを呼び出すWebページに表示されます。だから、私はWebページに重複を取得します。私はデータベースクエリライターでSQLを使ってこれらの結果を再現していません。
これは、クエリから2つのランダムな行を取得するのに最適な方法ですか。 NEWID()は重複の可能性を排除しますか?あなたは、このような単純なクエリで二度同じ行を選択することはできませんので、あなたが重複を取得するべきではありませんBikeID
で2行を持っているか、クエリの例は、OPが実際にやっているものの代表ではないです。 –
idsが重複していません。私は自分の問題がWebページを生成するシステムのどこかにあると信じています。 –
@エヴィク・ジェームズ:そうかもしれない。ただし、そのテーブル*のクエリは*重複した行を与えません。 JOINで行がどのように掛け合わされるかによって、実際のクエリにJOINが存在するかどうかを確認することができます。投稿されたクエリは実際のデータの実際のクエリですか? – gbn