如何(甚至逻辑地)随机至少一个,例如来自数据库的Id是否已指定列值?
我的意思是我有数据库表ID,问题ID,答案文本值和bool(如果答案是正确的)列,我想得到例如三个答案,其中一个(至少)是正确的。
非常感谢你的建议帮助!
答案 0 :(得分:2)
请查看this为多个数据库执行此操作。
SELECT TOP 3 id FROM yourtable WHERE isCorrect = 1 ORDER BY NEWID()
答案 1 :(得分:1)
所以你想要做出多项选择,并在 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()对性能来说不是很糟糕。