我有一个包含以下列的表:
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排序的行,但按计划启动的辅助排序不起作用。
有什么想法吗?
答案 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