首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由一列和一列的MySQL顺序

由一列和一列的MySQL顺序
EN

Stack Overflow用户
提问于 2017-10-11 15:58:06
回答 2查看 200关注 0票数 0

我的问题不一样,但我读过类似的文章:How can I order by two columns, if result is equal, consider another column?

我对两栏感兴趣:

  • production_id
  • 日期

查询是:

代码语言:javascript
复制
SELECT BATCH_ISSUED.production_id, MANUFACTURE_DATE.date
FROM BATCH_ISSUED LEFT JOIN
     MANUFACTURE_DATE
     ON BATCH_ISSUED.production_id = MANUFACTURE_DATE.production_id
WHERE MANUFACTURE_DATE.active='1'
ORDER BY MANUFACTURE_DATE.date ASC,BATCH_ISSUED.production_id ASC

这将获取数据并按日期(旧的>新的)进行排序,然后按id进行排序,但它需要将所有相同的id组合在一起,这可能意味着需要以某种方式包含分组。

数据的一个例子:

代码语言:javascript
复制
195 2017-10-10
196 2017-10-10
196 2017-10-10
258 2017-10-10
258 2017-10-10
189 2017-10-12
190 2017-10-12
258 2017-10-12
212 2017-10-13
213 2017-10-13

它应该以这样的方式呈现,例如ID 258按日期顺序保存在一起:

代码语言:javascript
复制
    195 2017-10-10
    196 2017-10-10
    196 2017-10-10

    258 2017-10-10
    258 2017-10-10
    258 2017-10-12

    189 2017-10-12
    190 2017-10-12
    212 2017-10-13
    213 2017-10-13

非常感谢您的建议!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-11 16:03:00

首先,WHERE子句将OUTER JOIN转换为INNER JOIN。因此,甚至不需要JOIN。因此,您的查询相当于:

代码语言:javascript
复制
SELECT md.production_id, md.date
FROM MANUFACTURE_DATE md
WHERE md.active = 1
ORDER BY md.date ASC, md.production_id ASC;

然后可以使用JOIN获取所需的信息:

代码语言:javascript
复制
SELECT md.production_id, md.date
FROM MANUFACTURE_DATE md JOIN
     (SELECT md2.production_id, MIN(md2.date) as mind
      FROM MANUFACTURE_DATE md2
      WHERE md.active = 1
      GROUP BY md2.production_id
     ) mmd
     ON md.production_id = md2.production_id
WHERE md.active = 1
ORDER BY mdd.mind ASC, md.production_id ASC, md.date;
票数 0
EN

Stack Overflow用户

发布于 2017-10-11 16:08:49

它应该按顺序颠倒你的顺序:

代码语言:javascript
复制
 ORDER BY BATCH_ISSUED.production_id DESC, MANUFACTURE_DATE.date ASC,
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46692738

复制
相关文章

相似问题

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