mysql 自定义排序函数filed() order by field

mysql 可以通过filed() 函数自定义排序

格式:

field(value,str1,str2,str3,str4,...)

value与str1、str2、str3、str4比较,返回1、2、3、4,如遇到null或者不在列表中的数据则返回0

需求:一天内,同一个站有n条数据,状态分别是DL,TF,BS,现在要求只留一条,状态取值 DL>BS>TF,如果这个站存在DL的数据,则状态为DL,如果没有DL 有BS,则为BS,如果只有TF,则为TF。

SELECT
    * 
FROM
    (
    SELECT
        * 
    FROM
        tb_lte_nokia_status 
    WHERE
        sta_date = '2019-01-04 14:29:29' 
        AND enodebid = 234117 
    ORDER BY
        FIELD( type, 'DL', 'BS', 'TF' ),
        enodebid 
    ) t 
GROUP BY
    enodebid;

先按状态类型和站号排序,这样DL数据排在最前面,BS其次,TF排在最后,

最后按enodebid分组的时候,会取第一条数据,刚好满足要求。

你可能感兴趣的:(数据库,mysql)