首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql多条件排序

mysql多条件排序
EN

Stack Overflow用户
提问于 2014-02-24 08:03:40
回答 2查看 1.9K关注 0票数 10

我在下面有sql,它想要做多个订单。

代码语言:javascript
复制
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

我认为编写PDO对你们来说并不重要,因为我的问题只是关于这个sql的。这个sql运行得很好,我只想添加额外的函数。因此,请参阅本专栏:r.status_id IN (1,2,3,4,5)

我给了Order BY r.res_id

我的问题是:我想对每个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中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-24 08:11:38

代码语言:javascript
复制
ORDER BY IF(r.status_id IN (1,2), r.res_id, NULL) DESC, r.res_id

使用此ORDER BY子句排序的记录集将首先显示使用r.status_id IN (1,2)进行排序的所有记录(因为NULL值按降序排列),它们本身按r.res_id的降序排序;其次是由r.res_id按升序排序的所有其他值。

票数 9
EN

Stack Overflow用户

发布于 2014-02-24 08:06:09

您可以使用联合语法:

代码语言:javascript
复制
SELECT * FROM ((SELECT
    r.*,
    s.uzunluq,
    b.id,
    au.status_id as aksessuar_status,
    au.aksessuar_id,
    au.aksessuar,
    1 as query_order
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)
ORDER BY 
    r.res_id DESC) as table1
UNION
(SELECT
    r.*,
    s.uzunluq,
    b.id,
    au.status_id as aksessuar_status,
    au.aksessuar_id,
    au.aksessuar,
    0 as query_order
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 (3,4,5)
ORDER BY 
    r.res_id) as table2) sa table3 ORDER BY query_order
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21982072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档