2

テーブル名がありますTop_Up。現在のスナップショットは次のとおりです。 Top_Upテーブル

クエリを実行するSELECT * FROM Top_Up WHERE Top_up_ID = (round(random() * 9 ) + 1);と、ランダムな結果が得られます。2つのタプルで返される場合もあれば、タプルがない場合と1つのタプルで返される場合もあります。

デバッグするには、クエリを実行しますSelect (round(random() * 9 ) + 1);が、結果には常に1つのタプルのみが返されます。

なぜこの漠然としたランダムな結果が得られるのですか?

4

1 に答える 1

3

ラウンドは行ごとに計算されています。これを試して:

SELECT TOP 1 * FROM Top_Up ORDER BY (round(random() * 9 ) + 1);

テーブルに対してテストを実行すると、はるかに異なる結果が表示されるはずです。

 Select (round(random() * 9 ) + 1) FROM Top_Up `

ランダムなレコードが必要な場合は、次のようにします。

SELECT TOP 1 * FROM Top_Up ORDER BY NEWID()
于 2012-11-07T22:01:25.673 に答える