cakephp:对ASC进行排序,但结尾为0
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cakephp:对ASC进行排序,但结尾为0相关的知识,希望对你有一定的参考价值。
在查找请求中,如何按升序对数值进行排序,但在结束时使用0值?
我想:[2,5,7,7,0,0]
$this->Resuls->find()
->order(['Resuls.sec'=>'asc']);
谢谢
答案
根据DBMS,有各种方法可以实现这一目标。
应该对Cakephp支持的所有DBMS起作用的方法可能是使用CASE
语句来首先排序Resuls.sec
是0
的行到后面,然后在Resuls.sec
regulary上升的顺序之后,这应该得到你的结果寻找。
$query = $this->Resuls->find();
$zeroLastCase = $query->newExpr()->addCase(
[$query->newExpr()->add(['Resuls.sec' => 0])],
[1, 0],
['integer', 'integer']
);
$query
->orderAsc($zeroLastCase)
->orderAsc('Resuls.sec');
这将产生类似于以下的ORDER BY
条款:
ORDER BY
CASE WHEN Resuls.sec = 0 THEN 1 ELSE 0 END ASC,
Resuls.sec ASC
也可以看看
以上是关于cakephp:对ASC进行排序,但结尾为0的主要内容,如果未能解决你的问题,请参考以下文章
C语言中利用qsort函数对字符串数组按ASC码进行排序并输出、