MySQL按特定列值排序,辅助订单按另一列的日期排序

时间:2015-10-22 23:10:58

标签: mysql

我有一个包含以下列的表:

status
scheduled_start

我想将它排序为首先显示状态设置为“Needs Attention”的行,但我希望按ASC顺序通过scheduled_start进行二次排序。

这样做的:

SELECT `tickets`.* FROM `tickets` ORDER BY CASE status WHEN 'Needs Attention' THEN 0 ELSE 1 END AND scheduled_start ASC

将生成按status = Needs Attention排序的行,但按计划启动的辅助排序不起作用。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

试试这个:

SELECT `tickets`.* FROM `tickets` ORDER BY CASE WHEN `status` = 'Needs Attention' THEN 0 ELSE 1 END ASC, scheduled_start ASC

答案 1 :(得分:1)

ORDER BY子句中有一个不必要的“AND”。请尝试使用逗号替换它:

SELECT `tickets`.* 
FROM `tickets` 
ORDER BY 
   CASE status WHEN 'Needs Attention' THEN 0 ELSE 1 END,
   scheduled_start ASC

答案 2 :(得分:1)

Order by子句不是条件,它是您要排序的字段和表达式列表,因此请用逗号分隔,而不是和:

.... order by expression1, field1