| id|文件号|文件状态|
| - -----|- -----|- -----|
| 1| 12335|已通知|
| 2|四五六二|已批准|
| 3|四六七二三四|结果|
| 4|七八四五六|已批准|
| 5个|114667|已批准|
我想按id ASC对所有记录进行排序,但document_status为RESULTANT
的记录必须是最后一个,因此它看起来如下所示
| id|文件号|文件状态|
| - -----|- -----|- -----|
| 1| 12335|已通知|
| 2|四五六二|已批准|
| 4|七八四五六|已批准|
| 5个|114667|已批准|
| 3|四六七二三四|结果|
这就是我尝试的,但是它完全忽略了我的第二个ORDER条件
SELECT
l.id,
l.document_number,
l.document_status
FROM load_record l
ORDER BY l.id ASC, (l.document_status = 'RESULTANT')
如果我删除l.id ASC
,它会工作,但它会将RESULTANT
放在最后,但不会按id ASC对其余记录进行排序
1条答案
按热度按时间qlzsbp2j1#
在
ORDER BY
子句中,只有当前面的条件被绑定时,才会查询后续的排序字段(在您的示例中,第二个字段相对于第一个字段),但是在您的示例中,“l.id ASC”从不被绑定,因此“l.document_status = 'RESULTANT'”从不被检查。如果您反转
ORDER BY
子句中的字段,它应该可以正常工作,因为l.document_status = 'RESULTANT'
实际上会生成绑定值,并由l.id
解除绑定。查看演示here。
注意:
ASC
是默认排序值,可以省略。