mysql按多个条件排序

Ras*_*had 10 mysql sql-order-by

我在下面有sql,想要多个ORDER BY.

SELECT
    r.*,
    s.uzunluq,
    b.id,
    au.status_id as aksessuar_status,
    au.aksessuar_id,
    au.aksessuar
FROM
    seksiya s,
    result r
LEFT JOIN bosh_seksiya_aksessuar b
    ON
    b.bosh_seksiya = r.model AND
    b.ERK = :ses
LEFT JOIN aksessuar_up au
    ON au.model_id = r.res_id AND
    au.user_id = :user_id AND
    au.status_id = 9
WHERE 
    r.user_id = :user_id AND
    r.model=s.seksiya AND 
    s.erk = :ses AND
    r.status_id IN (1,2,3,4,5)
ORDER BY 
    r.res_id
Run Code Online (Sandbox Code Playgroud)

我想写php PDO对你来说并不重要,伙计们,这个问题只引起我的问​​题.这个sql工作得很好,我只是想添加额外的功能.所以,看看这个专栏:r.status_id IN (1,2,3,4,5)

我给了 Order BY r.res_id

我的问题:我想为每个使用多个ORDER status_id

如何订购:

ORDER BY r.res_id DESC WHERE r.status_id IN (1,2)

ORDER BY r.res_id WHERE r.status_id IN (3,4,5)

在这个SQL?

egg*_*yal 9

ORDER BY IF(r.status_id IN (1,2), r.res_id, NULL) DESC, r.res_id
Run Code Online (Sandbox Code Playgroud)

使用此ORDER BY子句排序的记录集将首先显示所有记录r.status_id IN (1,2)(因为NULL值按递减顺序排在最后),它们自己按降序排列r.res_id; 然后按r.res_id升序排序所有其他值.