MYSQL ORDER BY 子句无效

MYSQL ORDER BY clause is not working

我有 table 个任务:

id      title   date_task               complete

4948    Test 1  2017-11-10T11:00:00Z    1
4953    Test 2  2017-11-13T14:00:00Z    1
5028    Test 3  2017-11-21T11:00:00Z    1
5029    Test 4  2018-04-02T10:00:00Z    0

我想先排序:如果tasks.comeplete = 0按ASC排序,其他按desc排序...

我的查询:

SELECT 
    *
FROM 
    `tasks`
ORDER BY 
    CASE WHEN tasks.complete = 0 THEN tasks.date_task END ASC, tasks.date_task DESC

我的结果:

id      title   date_task               complete
5028    Test 3  2017-11-21T11:00:00Z    1
4953    Test 2  2017-11-13T14:00:00Z    1
4948    Test 1  2017-11-10T11:00:00Z    1
5029    Test 4  2018-04-02T10:00:00Z    0

我要结果:

id  title   date_task   complete
5029    Test 4  2018-04-02T10:00:00Z    0
5028    Test 3  2017-11-21T11:00:00Z    1
4953    Test 2  2017-11-13T14:00:00Z    1
4948    Test 1  2017-11-10T11:00:00Z    1

SQL FIDDLE: http://sqlfiddle.com/#!9/6f4a0/1

谢谢

这是一种方法:

SELECT *
FROM `tasks`
ORDER BY tasks.complete,
         CASE 
            WHEN tasks.complete = 0 THEN DATEDIFF(tasks.date_task, '1900-01-01') 
            ELSE DATEDIFF('1900-01-01', tasks.date_task) 
         END

Demo here

相当简单:

SELECT *
FROM tasks
ORDER BY
    tasks.complete,
    CASE WHEN tasks.complete = 0 THEN tasks.date_task END,
    CASE WHEN tasks.complete = 1 THEN tasks.date_task END DESC