尝试做一些类似于这个问题的事情,但是需要对mysql最后一个空值进行排序
有点像。。。
$query->MODEL_NAME::find();
$query->orderBy(['column_1' => 'IS NULL','column_1'=> SORT_DESC]);
虽然这个语法是错误的。谢谢!
当我尝试的时候 orderBy('column_1 IS NULL ASC, column_1 desc')
我得到了错误
sqlstate[42s22]:找不到列:1054未知列。正在执行的sql是: SELECT * FROM 'table' ORDER BY 'due_date IS NULL'
注意:在上面的错误中必须用单引号替换反勾号才能显示在这里。
2条答案
按热度按时间2skhul331#
使用
\yii\db\Expression
```MODEL::find()
->where('1')
->orderBy(
[
new \yii\db\Expression('col_1 IS NULL ASC, col_1 desc')
]
)
->all();
x7rlezfr2#
按升序排序,最后为空
使用减号运算符:
在mysql中,空值的顺序被认为比任何非空值都低,除非排序时在列名之前添加了-(减号)字符。
查询:
使用yii框架
使用is null比较运算符:
我们可以信赖的事实是,是空的回报
1
当表达式NULL
,和0
否则。有了这些信息,我们可以这样做:使用yii框架
使用合并函数
这个
COALESCE
函数,它返回指定参数列表中的第一个非空值(或NULL
如果没有非空值)。因此,要排序NULL
最后,在按升序排序非空值时,我们可以简单地提供可能的最高值作为NULL
价值观。查询
这是因为zee是字母表中的最后一个字母,默认情况下,mysql会先对符号和数字排序,然后再对字母表排序。因此,用字母zee的最高可能序列替换空值会将空值推到列表的底部。
使用yii框架
请参阅此处了解更多详细信息