【发布时间】:2017-12-14 10:22:33
【问题描述】:
我有餐桌任务:
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
谢谢
【问题讨论】:
-
你的意思是,如果
complete= 0,那么日期应该是升序,如果是1,那么降序对吧? -
是的,因为结果对我来说似乎很好,因为 2018-04-02T10:00:00Z 年份是 2018
-
不,只有在完成 = 0 时才排序,其次是其他人
标签: php mysql sql sorting sql-order-by