Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >sql连接中的order by

sql连接中的order by
EN

Stack Overflow用户
提问于 2016-06-24 16:00:29
回答 2查看 62关注 0票数 0

我有一个sql查询,它精确地返回我需要的数据。但是,我在Order By上遇到了问题。我想我可能需要一些嵌套的select或Group By,但我从来没有做过,所以我想知道是否有人可以帮助我。数据需要首先按centre_id排序,然后按learner_name排序,然后按journey_centre_start排序,但它似乎只按centre_id和learner_name排序,而忽略了对journey_centre_start的排序。

Journey_centre_start是数据库中具有空默认值的日期类型。

代码语言:javascript
代码运行次数:0
复制
SELECT a.learner_id
     , a.learner_name
     , a.centre_id
     , a.learner_status
     , b.journey_id
     , c.journey_centre_start
  FROM learner a
  JOIN learner_journey b  
    ON a.learner_id = b.learner_id
  JOIN journey c 
    ON b.journey_id = c.journey_id
 WHERE a.centre_id != 999
   AND a.learner_status = 'complete'
 ORDER 
    BY a.centre_id ASC 
     , a.learner_name ASC 
     , c.journey_centre_start ASC;
EN

回答 2

Stack Overflow用户

发布于 2016-06-24 18:30:07

如果您希望journey_centre_start中的空值位于列表的底部,则可以将CASE语句添加到您的ordering`

代码语言:javascript
代码运行次数:0
复制
  SELECT a.learner_id
 , a.learner_name
 , a.centre_id
 , a.learner_status
 , b.journey_id
 , c.journey_centre_start
  FROM learner a
 JOIN learner_journey b  
  ON a.learner_id = b.learner_id
 JOIN journey c 
  ON b.journey_id = c.journey_id
 WHERE a.centre_id != 999
 AND a.learner_status = 'complete'
 ORDER 
 BY a.centre_id ASC 
 , a.learner_name ASC 
 , CASE WHEN c.journey_centre_start IS NULL THEN 2 ELSE 1 END
 , c.journey_centre_start ASC
票数 1
EN

Stack Overflow用户

发布于 2016-06-25 11:22:17

感谢所有回复我帖子的人。通过讨论它,我真正意识到解决方案非常简单。我只需要将Order By语句改为: ORDER BY a.centre_id ASC,c.journey_centre_start ASC,a.learner_name ASC,它就给了我想要的结果。向你们大家致以最亲切的问候。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38017561

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文