MysQL Found Rows не работает с phpmyadmin - PullRequest
2 голосов
/ 08 декабря 2011

Я выполняю следующий запрос MySQL внутри phpmyadmin.Функция found_rows () не возвращает никакого результата.

SELECT SQL_CALC_FOUND_ROWS `name` ,  `ability` 
FROM  `magic` 
WHERE  `name` LIKE  'Black%'
GROUP BY  `name` 
ORDER BY  `name` 
LIMIT 0 , 10;
SELECT FOUND_ROWS();

Я пытался выполнять запросы Select отдельно, один за другим, но я получаю неожиданные результаты.Только первый запрос возвращает 13 результатов, что является правильной суммой.Когда я запускаю запрос found_rows () после этого, возвращается 20.

Как я могу заставить Found_rows () правильно отчитаться?

Спасибо, skibulk

1 Ответ

7 голосов
/ 08 декабря 2011

Вы не можете, в PHPMyAdmin.

PHPMyAdmin использует сам FOUND_ROWS(), чтобы сообщить вам, сколько строк было найдено в вашем последнем запросе, и сам анализирует его, чтобы сказать вам «х результатов найдено».

Каждый раз, когда вы делаете простое SELECT, PHPMyAdmin добавляет ограничение и выполняет этот выбор, а затем FOUND_ROWS, чтобы сообщить вам, сколько результатов вы бы получили без LIMIT. Так PHPMyAdmin также предлагает пейджинг (по умолчанию 30 элементов).

Кроме того, вы не можете звонить FOUND_ROWS() два раза: во второй раз, когда вы звоните, он будет ссылаться на первый раз, когда вы звонили. Поскольку первый раз возвращает 1 строку, вы получите 1 в качестве результата.

Также обратите внимание: по умолчанию каждый запрос, который вы вводите в PHPMyAdmin, открывает новое соединение с MySQL, выполняет запрос и закрывает соединение. Ваш следующий запрос не будет знать о первом запросе, если вы не поместите их все вместе в текстовую область ввода, разделенную точкой с запятой.

Если вы хотите использовать FOUND_ROWS (), используйте другой mysql-клиент. Командная строка mysql в порядке:

mysql> SELECT SQL_CALC_FOUND_ROWS TABLE_NAME FROM `information_schema`.tables WHERE TABLE_NAME LIKE "COL%" LIMIT 3;
+---------------------------------------+
| TABLE_NAME                            |
+---------------------------------------+
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS                               |
+---------------------------------------+
3 rows in set (0.01 sec)

mysql> SELECT FOUND_ROWS( );
+---------------+
| FOUND_ROWS( ) |
+---------------+
|             5 |
+---------------+
1 row in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...