困难的随机
本文关键字:随机 | 更新日期: 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()对性能来说不会很差。