首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Order By内的Order By

SQL Order By内的Order By
EN

Stack Overflow用户
提问于 2010-11-30 04:46:07
回答 2查看 1.5K关注 0票数 2

所以我有两个表,问题和答案,由一个多对多关系表QuestionsAnswers连接起来。问题有一个排序列,它允许我控制它们向用户显示的方式,QuestionsAnswers也有一个排序列,它允许我控制每个问题答案的顺序。我的问题是,我正在尝试编写一个SQL查询,它将选择所有问题及其答案,首先按Question.Sort排序,然后按QuestionsAnswers.Sort排序。这两个排序列都可以为空,并且这些列中的整数应该优先于空值。

我可以让Order By Questions.Sort正常工作,但是一旦我添加了第二个排序列,它就出错了。例如,如果一个问题有一个排序= 0,这意味着它应该是第一个显示的问题,但对它的答案没有任何偏好,那么它将在Questions.Sort = null和QuestionsAnswers.Sort =0的QuestionsAnswers行下面排序。

任何提示或想法,如果这甚至是可行的将是伟大的。

编辑:

代码语言:javascript
复制
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;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-30 04:50:16

代码语言:javascript
复制
ORDER BY COALESCE(Questions.Sort, 999999999), COALESCE(Answers.Sort, 999999999)
票数 5
EN

Stack Overflow用户

发布于 2010-11-30 04:59:48

据我所知,像这样的东西应该能起到作用。除非我错过了什么。

代码语言:javascript
复制
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 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4307932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档