2012-01-21 6 views
0

私は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

答えて

1

前にDISTINCTを追加

+2

で2行を持っているか、クエリの例は、OPが実際にやっているものの代表ではないです。 –

+0

idsが重複していません。私は自分の問題がWebページを生成するシステムのどこかにあると信じています。 –

+0

@エヴィク・ジェームズ:そうかもしれない。ただし、そのテーブル*のクエリは*重複した行を与えません。 JOINで行がどのように掛け合わされるかによって、実際のクエリにJOINが存在するかどうかを確認することができます。投稿されたクエリは実際のデータの実際のクエリですか? – gbn

0

してみてください。

ので、簡単な答えは、あなたがBikeID = 3

関連する問題