如何选择除最后2个以外的所有表记录?

时间:2014-09-05 12:38:36

标签: php mysql sql yii

我正在使用Yii,我想选择除最后2条记录之外的所有模型记录,但是我收到错误,表示存在语法错误,这是我的代码:

$c = new CDbCriteria();
$c->select = "*";
$c->condition = "idNewsEvents!=(SELECT MAX(idNewsEvents) FROM newsevents) AND idNewsEvents!=(SELECT MAX(idNewsEvents)-1 FROM newsevents))";
$model2 = Newsevents::model()->findAll($c);

3 个答案:

答案 0 :(得分:1)

这个认为,idNewsEvents可能不是顺序的(由于删除或其他)。

$c = new CDbCriteria();
$c->select = "*";
$c->condition = "idNewsEvents NOT IN (SELECT idNewsEvents FROM newsevents ORDER BY idNewsEvents DESC LIMIT 2)";
$model2 = Newsevents::model()->findAll($c);

P.S。:不确定这是否正确yii语法,我不熟悉它,但我对MySQL非常熟悉。无论如何,你得到了我希望的想法。

答案 1 :(得分:0)

可以在一次检查中完成两次检查

$c->condition ="idNewsEvents < (SELECT MAX(idNewsEvents)-1 FROM newsevents)";

示例查询

SELECT * FROM `users` WHERE user_id < (SELECT MAX(user_id)-1 FROM users)

答案 2 :(得分:-2)

它应该是:

$c->condition = "idNewsEvents!=(SELECT MAX(idNewsEvents)
FROM newsevents) AND idNewsEvents!=(SELECT MAX(idNewsEvents)-1 FROM newsevents)";

最后只有一个额外的支架和一个非常疲惫的眼睛注意到:(。