首页 > 解决方案 > 当且仅当在同一天发布时,将行显示在彼此之上

问题描述

我有桌子

+---------------------+-------+
| date_in             | title |
+---------------------+-------+
| 2018-01-01 00:00:00 | foo2  |
| 2018-01-02 00:00:00 | bar   |
| 2018-01-03 00:00:00 | man   |
| 2018-01-04 01:00:00 | foo2  |
| 2018-01-04 02:00:00 | foo   |
| 2018-01-04 03:00:00 | foo1  |
| 2018-01-04 04:00:00 | foo2  |
| 2018-01-05 00:00:00 | test  |
+---------------------+-------+

我想要的结果是

+---------------------+-------+
| date_in             | title |
+---------------------+-------+
| 2018-01-05 00:00:00 | test  |
| 2018-01-04 04:00:00 | foo2  | -- see this
| 2018-01-04 01:00:00 | foo2  | -- see this
| 2018-01-04 03:00:00 | foo1  |
| 2018-01-04 02:00:00 | foo   |
| 2018-01-03 00:00:00 | man   |
| 2018-01-02 00:00:00 | bar   |
| 2018-01-01 00:00:00 | foo2  |
+---------------------+-------+

我尝试了以下查询和其他几个查询,但它不起作用

SELECT
    detail.* 
FROM
    test detail
    JOIN ( SELECT min( date_in ) firstdate, title FROM test GROUP BY title ) firstdate ON detail.title = firstdate.title 
ORDER BY
    firstdate.firstdate,
    detail.title,
    detail.date_in 

但是此查询显示彼此顶部具有相同标题的行,无论日期如何

我希望行仅在同一天时才显示在彼此之上

这里http://sqlfiddle.com/#!9/039aa/6带有架构的 SQLFiddle。

标签: mysqlsql

解决方案


似乎您需要按日期(date_in)和标题 desc 排序

 SELECT
    detail.* 
 FROM test detail
 ORDER BY
    date(detail.date_in),
    detail.title desc,
    detail.date_in 

推荐阅读