使用SQL_CALC_FOUND_ROWS()时出错

时间:2012-02-18 17:52:55

标签: php mysql codeigniter activerecord

我正在做一个简单的MySQL查询来计算查询返回的行数,而不受LIMIT子句的影响。我正在使用Active Records和Codeigniter PHP框架。

问题:我在使用SQL_CALC_FOUND_ROWS时收到错误消息。为什么会这样?

查询

SELECT `listing_id`, SQL_CALC_FOUND_ROWS listing_id FROM (`listings`) LIMIT 100

错误

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   在'SQL_CALC_FOUND_ROWS listing_id FROM(listings)LIMIT 100'附近   第1行

Codeigniter活动记录

$this->db->select('listing_id')
            ->select('SQL_CALC_FOUND_ROWS listing_id', FALSE)
            ->from('listings')
            ->where('price < 1000')
            ->limit($limit, $offset)
            ->order_by('listing_id', 'desc');

2 个答案:

答案 0 :(得分:2)

SQL_CALC_FOUND_ROWS不会返回一个值,它只是一个修饰符,用于指示不考虑LIMIT子句的行数 - 以便以后检索它on,通过使用第二个查询(不生成两次完整的结果集)。可以认为它与DISTINCT关键字相同。

有关详细信息,请阅读有关此主题的documentation

答案 1 :(得分:0)

您可以使用MySql的count()功能来实现您的目标,即

SELECT `listing_id`, count(*) FROM (`listings`) LIMIT 100