我的问题不同,但我读过这篇类似的帖子: How can I order by two columns, if result is equal, consider another column?
我对 2 列感兴趣:
- 生产 ID
- 日期
查询是:
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
分组在一起,这可能意味着GROUP BY 需要以某种方式包含在内。
数据示例:
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 按日期顺序放在一起:
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
非常感谢您的建议!
最佳答案
按顺序颠倒顺序就足够了:
ORDER BY BATCH_ISSUED.production_id DESC, MANUFACTURE_DATE.date ASC,
关于MySQL ORDER BY 一列和第二列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46692738/