Я хочу поймать X строк, таким образом, я установил LIMIT X
; но как я могу одновременно подсчитать общее количество строк?
В настоящее время я использую два отдельных запроса, чтобы сделать это
SELECT COUNT(*) FROM col WHERE CLAUSE
SELECT * FROM col WHERE CLAUSE LIMIT X
Есть ли способ сделать это в одном запросе?
РЕДАКТИРОВАТЬ: выходные данные должны быть col
ячейки и количество строк. Фактически, после выбора col
ячеек он должен пройти по столу только для подсчета.
Я знаю, что невозможно объединить эти два запроса, так как первый возвращает 1 строку, а второй X строк. Мне любопытно, если в mysql есть функция, которая возвращает количество строк при наличии LIMIT
.
Ответы:
Похоже, вы хотите запустить LIMIT, но все равно знаете, сколько строк было бы возвращено без LIMIT. Проверьте НАЙДЕННЫЕ СТРОКИ
источник
FOUND ROWS
, и хотя он по-прежнему выполняет два запроса, производительность может быть выше, чем при выполнении второго запроса COUNT (*) (в зависимости от запросов и набора данных).mysql
не оставим нас в покое по такому важному вопросу;)Используйте
SQL_CALC_FOUND_ROWS
в вашем запросе SELECT и затем выполнитеSELECT FOUND_ROWS()
:источник
Я знаю, что это старый, но он больше не действителен, с MySQL> = 8.0.17 cf MySQL Function Found_Rows () Так что нам все еще нужно выполнить оба запроса, т.е. добавить один с
COUNT()
, к сожалению.источник