我需要得到如下的MySQL订单结果:
id | active | year | size
----------------------------
1 | 1 | 1Q 2014 | 650
2 | 1 | 3Q 2010 | 200
3 | 1 | 1Q 2010 | 1650
4 | 1 | 4Q 2012 | 0
5 | 0 | 1Q 2014 | 650
6 | 0 | 2Q 2012 | 1200
7 | 0 | 1Q 2014 | 0
这在MySQL或Laravel Eloguent中是否可行? 谢谢你,亲切的问候, 保罗
正确答案:
SELECT * FROM my_table
ORDER BY active DESC,
(size > 0) DESC,
RIGHT(year, 4) DESC,
year DESC;
答案 0 :(得分:4)
MySQL有点痛苦,因为year
列有一个神秘的结构。最好将其存储为YYYY Q
格式。那么它很容易排序。但是,通过一些操纵,你可以做你想做的事:
order by active desc, -- actives first
(size > 0) desc, -- then size > 0
substring_index(year, ' ', 2) desc, -- then order by the year
year desc; -- then order by the quarter