我正在做一个简单的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');
答案 0 :(得分:2)
SQL_CALC_FOUND_ROWS
不会返回一个值,它只是一个修饰符,用于指示不考虑LIMIT
子句的行数 - 以便以后检索它on,通过使用第二个查询(不生成两次完整的结果集)。可以认为它与DISTINCT
关键字相同。
有关详细信息,请阅读有关此主题的documentation。
答案 1 :(得分:0)
您可以使用MySql的count()
功能来实现您的目标,即
SELECT `listing_id`, count(*) FROM (`listings`) LIMIT 100