首页 > 解决方案 > 如何随机排序结果,但有例外?

问题描述

我正在创建测验和测试系统。

在数据库中,我们有一个问题列表和一个可能的答案列表。

这些都应该以随机顺序返回,所以学生不能互相抄袭。

一个例外是当问题有可能的答案时,例如“以上所有内容”,在这种情况下,我们给它一个布尔值,[AlignBottom]. 如果[AlignBottom]是 1,我们必须强制这个答案出现在给定问题的最后,其余的答案仍然在它之前随机加载。

这是我首先尝试的,只是为了看看会发生什么。显然它没有用:

SELECT [AnswerID]
      ,[QuestionID]
      ,[AnswerValue]
      ,[IsCorrect]
      ,[AlignBottom]
  FROM [dbo].[Test-Answers]
  WHERE QuestionID = 4
  ORDER BY AlignBottom ASC, NewID()

而且我在SO上找不到这种特定的解决方案。

帮助?

标签: sqlsql-server

解决方案


根据您的描述,您的查询应该有效:

ORDER BY AlignBottom ASC, NewID()

推荐阅读