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
相当简单:
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
我有 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
相当简单:
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