Mysql Zend Select和NOT在数组中
我想按id选择不在其他表中的表条目。 用于以下代码:Mysql Zend Select和NOT在数组中,mysql,sql,zend-framework,zend-db-table,Mysql,Sql,Zend Framework,Zend Db Table,我想按id选择不在其他表中的表条目。 用于以下代码: $table2 = new OfferTable(); $select = $table2->select()->from('offers', array('aId as id')) ->where('mem_id =?', $memId); $table = new otherTable(); $select2 = $table->select()->where('id NOT i
$table2 = new OfferTable();
$select = $table2->select()->from('offers', array('aId as id'))
->where('mem_id =?', $memId);
$table = new otherTable();
$select2 = $table->select()->where('id NOT in (?)', $select);
$result = $table->fetchAll($select);
这可以很好地工作,但是当OfferTable有很多条目并且第一次选择只选择几个条目时,速度非常慢
因此,我尝试了以下方法:
$table2 = new OfferTable();
$select = $table2->select()->from('offers', array('aId as id'))
->where('mem_id =?', $memId);
$fetch = $table2->fetchAll($select);
$id_array = array();
foreach($fetch as $value){
$id_array[] = $value->id;
}
$table = new otherTable();
$select2 = $table->select()->where('city = ?', $city)
->where('id NOT in (?)', $id_array);
$result = $table->fetchAll($select);
这似乎工作得更快,但有时我会收到以下错误消息:
SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获取第1行中使用的正确语法(near'))和(id NOT IN('3956','3821'))
我不明白为什么我会犯这个错误,尤其是为什么我没有一直都犯这个错误。
谢谢你的帮助 我想我解决了这个问题: 在原始代码中,我使用了两个->where('id NOT In(?),$id\u数组)语句。
当其中一个数组为空时发生错误。我想我解决了这个问题: 在原始代码中,我使用了两个->where('id NOT In(?),$id\u数组)语句。
当其中一个数组为空时发生错误。查看查询并尝试在phpmyadmin中运行它。查看查询并尝试在phpmyadmin中运行它。