我正在使用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);
答案 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)";
最后只有一个额外的支架和一个非常疲惫的眼睛注意到:(。