【发布时间】:2019-01-21 00:56:40
【问题描述】:
好的,所以我有一张这样的桌子
+----+-------+------------+
| id | title | date |
+----+-------+------------+
| 1 | aaa | 2018-08-13 |
| 2 | bbb | 2018-08-02 |
| 3 | ccc | 2018-07-06 |
| 4 | ddd | 2018-07-16 |
| 5 | fff | 2018-07-13 |
+----+-------+------------+
我想按日期列升序对其进行排序,但仅在特定日期之前对其进行排序,之后我想对其进行降序排序,如下所示
+----+-------+------------+
| id | title | date |
+----+-------+------------+
| 4 | ddd | 2018-07-16 |
| 2 | bbb | 2018-08-02 |
| 1 | aaa | 2018-08-13 |
| 5 | fff | 2018-07-13 |
| 3 | ccc | 2018-07-06 |
+----+-------+------------+
我以为我可以使用UNION,但我不知道如何使用它,或者它不接受每个SELECT 中指定的ORDER BY 子句。
编辑:我可能没有很好地解释自己。在我的查询中,我需要按日期升序对特定日期(> = 某个日期,在这种情况下让我们使用 2018-07-15)之后的所有行和之前的所有行进行降序排序。
【问题讨论】:
-
这里有各种各样的技巧......你可能真的只需要其中的一两个 sqlfiddle.com/#!9/58a8ac/20
-
@Strawberry 你能把它作为一个答案,因为这个是唯一一个似乎可以正常工作的。
-
很有趣,我没想到这样的事情实现起来如此复杂。
-
我对这个问题不满意......所以我用联合创建了一个类似的问题,但我看到了其中的一些逻辑,所以我会发布答案。
-
不过很好的练习。 :)
标签: php mysql sql mysql-workbench navicat