首先使用if列上的if函数按特定字段值排序

时间:2017-10-05 20:51:08

标签: mysql

我正在使用ORDER BY函数来正确排序我的数据库输出

ORDER BY FIELD(ds.status, 'open', 'afgerond', 'in behandeling', 'hold', 'geoffereerd', 'gefactureerd', 'vervallen'), ds.dossier_nr DESC

我想要的是当behandeling'在此查询中使用ordr.datum_leveren ASC而不是ds.dossier_nr

对这些项目进行排序

是否有可能以及如何在ORDER BY函数中使用if函数?

2 个答案:

答案 0 :(得分:0)

您可以使用case子句中的order by表达式来实现此行为:

ORDER BY FIELD(ds.status, 'open', 
                          'afgerond', 
                          'in behandeling',
                          'hold',
                          'geoffereerd',
                          'gefactureerd',
                          'vervallen'),
         CASE ds.status WHEN 'in behandeling' THEN ordr.datum_leveren
                        ELSE ds.dossier_nr * -1
         END ASC

答案 1 :(得分:0)

添加一个额外的排序条件,当它具有该状态时返回新列,否则返回一些常量。常量并不重要,因为所有其他状态将在此排序级别中组合在一起,然后ds.dossier_nr将用于对它们进行排序。

ORDER BY FIELD(ds.status, 'open', 'afgerond', 'in behandeling', 'hold', 'geoffereerd', 'gefactureerd', 'vervallen'), 
    IF(ds.status = 'in behandeling', ordr.datum_leveren, 0) ASC,
    ds.dossier_nr DESC