×

mysql按照指定的顺序排序(order by case when)

chen chen 发表于2021-07-27 22:11:41 浏览1386 评论0

抢沙发发表评论

SELECT    * FROM    USER_FINISTORDER BY    CASE FINIST_CD=17 THEN 0,    CASE FINIST_CD=5 THEN 1,    CASE FINIST_CD=3 THEN 2,    CASE FINIST_CD=12 THEN 3    END ASC/DESC
这样的话查询结果的排序就是比如说的排序形式了
根据字段的不同值决定升序和降序
这种情况一般可以使用union all来进行实现相对比较简单,比如说
SELECT * FROM USER WHERE USER_TYPE=1 ORDER BY CREATE_TIME DESC
UNION ALL
SELECT * FROM USER WHERE USER_TYPE=2 ORDER BY CREATE_TIME ASC
或者说也可以使用case/when的形式
SELECT
    *
FROM
    USER
ORDER BY
    CASE WHEN DEPT_ID = 6 THEN USER_ID END DESC,
    CASE WHEN DEPT_ID != 6 THEN USER_ID END ASC


群贤毕至

访客