0

列の値を指定したデータベースから少なくとも 1 つのID などを (論理的にも) ランダムにする方法は?

つまり、データベース テーブル ID、質問 ID、回答テキスト値、および bool (回答が正しい場合) 列があり、たとえば 3 つの回答 Id を取得したいのですが、(少なくとも) そのうちの 1 つが正しいということです。

アドバイスで助けてくれてありがとう!

4

2 に答える 2

2

いくつかのDBに対してそれを行うには、これを見てください。

SELECT TOP 3 id FROM yourtable WHERE isCorrect = 1 ORDER BY NEWID()
于 2013-01-06T12:55:22.530 に答える
1

したがって、複数の選択肢を作成し、 yの回答のうちxを表示します。これらのyのうち、cは正しく、wは間違っています ( c+w=y )。

2 つのクエリを使用することをお勧めします。最初にランダムな正解を取得し、次にx-1 の不正解を取得します。ユーザーを混乱させるだけなので、2 つ以上の正解を使用しないことをお勧めします。

正しい答えを得るには、次のようにします。

SELECT TOP 1 ID 
FROM Answers 
WHERE QuestionID =@QuestionID -- parameter supplied from code
  AND IsCorrect = 1 
ORDER BY NEWID()

その後に

SELECT TOP 3 ID  -- assuming the X = 4 value is hardcoded in the application
FROM Answers 
WHERE QuestionID =@QuestionID -- parameter supplied from code
  AND IsCorrect = 0
ORDER BY NEWID()

正しいものを含め、他の答えを含めたい場合は、次のことができます

SELECT TOP 3 ID
FROM Answers 
WHERE QuestionID = @QuestionID
  AND ID != @ID -- where ID is the ID of the question from the first query
ORDER BY NEWID()

質問には大きな回答セットがないため (10 または 20 を超えないと思います)、各行で NEWID() を使用してもパフォーマンスはそれほど悪くありません。

于 2013-01-06T13:07:53.127 に答える