0

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

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

非常感谢您的建议帮助!

4

2 回答 2

2

看看这个为几个数据库做这件事。

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

因此,您想进行多项选择,并在y答案中显示x ,其中yc是正确的,而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() 对性能来说不会很糟糕。

于 2013-01-06T13:07:53.127 回答