我正在使用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函数?
答案 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