如何(甚至在逻辑上)从具有指定列值的数据库中随机至少一个例如 Id?
我的意思是我在数据库表 id、问题 id、答案文本值和 bool(如果答案正确)列中,我想获得例如三个答案 ID,(至少)其中一个是正确的。
非常感谢您的建议帮助!
如何(甚至在逻辑上)从具有指定列值的数据库中随机至少一个例如 Id?
我的意思是我在数据库表 id、问题 id、答案文本值和 bool(如果答案正确)列中,我想获得例如三个答案 ID,(至少)其中一个是正确的。
非常感谢您的建议帮助!
看看这个为几个数据库做这件事。
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() 对性能来说不会很糟糕。