选择表格中的最后一条记录

时间:2015-01-12 19:39:37

标签: php mysql yii2

如何从表格中选择最后一条记录(即MAX(id))? Next语句工作正常,但选择第一条记录:

$statistics = SystemStatisticsHistory::findOne(1); 

2 个答案:

答案 0 :(得分:20)

要获取最大id的模型,您可以应用逆序并限制为一个。

SystemStatisticsHistory::find()->orderBy(['id' => SORT_DESC])->one();

另一种选择是使用max的subselect,如下所示:

SystemStatisticsHistory::find()
    ->where(['id' => SystemStatisticsHistory::find()->max('id')])
    ->one();

使用最后一个选项有一些细微差别,请检查this question

您可以查看max() here的文档。

我个人更喜欢使用第一种变体。

要获取第一条记录,只需在第一次查询中将订单方向更改为SORT_ASC,在第二次查询中将订单方向更改为max()min()

P.S。硬编码id是一种不好的做法。

答案 1 :(得分:0)

优化了一个

SystemStatisticsHistory::find()->select(['id'=>'MAX(`id`)'])->one()->id;

或者如果您想按数字增加

SystemStatisticsHistory::find()->select(['id'=>'( MAX(`id`)+ 1) '])->one()->id;