困难的随机

本文关键字:随机 | 更新日期: 2023-09-27 17:50:52

如何(甚至在逻辑上)随机至少一个例如Id从数据库指定列值?

我的意思是我有在数据库表id,问题id,答案文本值和bool(如果答案是正确的)列,我想得到例如三个答案id,那(至少)其中一个是正确的。

非常感谢你的帮助和建议!

困难的随机

看一下这个为几个DB做的。

SELECT TOP 3 id FROM yourtable WHERE isCorrect = 1 ORDER BY NEWID()

所以你想做一个选择题,在y答案中显示x其中,在这些y中,c是正确的,而w是错误的(c+w=y)

我建议使用2查询,首先得到一个随机的正确答案,然后得到x-1不正确的答案。我建议不要使用两个或两个以上的正确答案,因为这只会让用户感到困惑。

要得到正确答案,你可以这样做:

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()对性能来说不会很差。