mysql订单位置DESC但是如果position =“chef”则放在第一位

时间:2012-01-02 13:31:14

标签: mysql sorting

问题:mysql订单位置DESC但是如果position =“chef”则放在第一位 我想订购下降,但先放一些东西。这个语法怎么样?

2 个答案:

答案 0 :(得分:11)

ORDER BY
   CASE 
     WHEN position="chef" THEN 0
     ELSE 1 
   END,
   position DESC

添加更多WHEN条件允许您确定某些位置的优先级

ORDER BY
   CASE 
     WHEN position="chef" THEN 0  -- first
     WHEN position="dogsbody" THEN 99 -- last
     ELSE 1 
   END,
   position DESC

答案 1 :(得分:2)

SELECT * FROM mytable ORDER BY column1='Put This First' DESC, column1;

这将首先放置column1='Put This First'的行,然后根据column1继续订购其他所有内容。

SELECT * FROM mytable ORDER BY column1=1 DESC, column2;

这是另一个例子。将行放在column1=1的第一位,然后根据column2的值对其余行进行排序。