所以我有两个表,问题和答案,由一个多对多关系表QuestionsAnswers连接起来。问题有一个排序列,它允许我控制它们向用户显示的方式,QuestionsAnswers也有一个排序列,它允许我控制每个问题答案的顺序。我的问题是,我正在尝试编写一个SQL查询,它将选择所有问题及其答案,首先按Question.Sort排序,然后按QuestionsAnswers.Sort排序。这两个排序列都可以为空,并且这些列中的整数应该优先于空值。
我可以让Order By Questions.Sort正常工作,但是一旦我添加了第二个排序列,它就出错了。例如,如果一个问题有一个排序= 0,这意味着它应该是第一个显示的问题,但对它的答案没有任何偏好,那么它将在Questions.Sort = null和QuestionsAnswers.Sort =0的QuestionsAnswers行下面排序。
任何提示或想法,如果这甚至是可行的将是伟大的。
编辑:
SELECT
Q.Id AS QuestionId,
Q.Name AS Question,
A.Id AS AnswerId,
A.Text AS Answer
FROM
dbo.Questions AS Q
INNER JOIN
dbo.QuestionsAnswers AS QA
ON Q.Id = QA.QuestionId
INNER JOIN
dbo.Answers AS A
ON QA.AnswerId = A.Id
ORDER BY
ISNUMERIC(Q.Sort) DESC,
Q.Sort,
Q.Id,
A.Text;发布于 2010-11-30 04:50:16
ORDER BY COALESCE(Questions.Sort, 999999999), COALESCE(Answers.Sort, 999999999)发布于 2010-11-30 04:59:48
据我所知,像这样的东西应该能起到作用。除非我错过了什么。
select questions.*, answers.*
from questionsanswers qa
inner join questions
on questions.idquestions = qa.questionid
inner join answers
on answers.idanswers = qa.answerid
order by isnull(questions.sort), questions.sort, isnull(qa.sort), qa.sort https://stackoverflow.com/questions/4307932
复制相似问题