Ошибка при использовании SQL_CALC_FOUND_ROWS () - PullRequest
1 голос
/ 18 февраля 2012

Я делаю простой запрос MySQL, чтобы подсчитать количество строк, возвращаемых запросом без эффекта предложения LIMIT. Я использую Active Records с PHP-фреймворком Codeigniter.

Проблема: Я получаю сообщение об ошибке при использовании SQL_CALC_FOUND_ROWS. Почему это так?

Запрос

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

Error

У вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного использования синтаксиса около 'SQL_CALC_FOUND_ROWS list_id FROM (listings) LIMIT 100' в линия 1

Codeigniter Active Records

$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 ]

2 голосов
/ 18 февраля 2012

SQL_CALC_FOUND_ROWS не возвращает значение, это просто модификатор, указывающий, что число строк, где не учитывается предложение LIMIT, должно быть сохранено, чтобы его можно было извлечь позже, используя второй запрос (без генерации полного набора результатов дважды). Думайте об этом так же, как ключевое слово DISTINCT.

Для получения дополнительной информации, пожалуйста, прочитайте документацию по этой теме.

0 голосов
/ 18 февраля 2012

Вы можете использовать функцию MySql count() для достижения того, что вы ищете, например.

SELECT `listing_id`, count(*) FROM (`listings`) LIMIT 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...