SQL_CALC_FOUND_ROWS и found_rows() - MySQL
Формулировка задачи:
Запрос не возвращает результат, т.е. условиям не соответствует ни одна строка, но found_rows() возвращает 1.
Сам запрос:
Но если добавить 1 в вывод, то found_rows() возвращает 0.
Как испаравить? Не хочу, чтобы выводилась 1.
SELECT
SQL_CALC_FOUND_ROWS
col1,
col2,
col3
FROM TABLE t
WHERE col3 = 99
AND col1< curdate() - INTERVAL 1 DAY
AND col2 NOT IN ('0' , '2', '3', '4', '5', '7', '8')
LIMIT 10;SELECT
SQL_CALC_FOUND_ROWS
col1,
col2,
col3,
1
FROM TABLE t
WHERE col3 = 99
AND col1< curdate() - INTERVAL 1 DAY
AND col2 NOT IN ('0' , '1')
LIMIT 10;Решение задачи: «SQL_CALC_FOUND_ROWS и found_rows()»
textual
Листинг программы
SELECT
SQL_CALC_FOUND_ROWS
col1,
col2,
col3,
1
FROM TABLE t
WHERE col3 = 99
AND col1< curdate() - INTERVAL 1 DAY
AND col2 NOT IN ('0' , '1')
LIMIT 10;
Объяснение кода листинга программы
В данном коде выполняется SQL-запрос, который выбирает данные из таблицы TABLE с несколькими условиями:
col3 = 99- выбираются только строки, где значение столбцаcol3равно 99.col1< curdate() - INTERVAL 1 DAY- выбираются только строки, где значение столбцаcol1меньше текущей даты на один день.col2 NOT IN ('0' , '1')- выбираются только строки, где значение столбцаcol2не равно 0 или 1. Затем, с помощьюLIMIT 10, выбираются первые 10 строк. Кроме того, в начале запроса указаноSQL_CALC_FOUND_ROWS, что означает, что функцияfound_rows()будет возвращать общее количество найденных строк, а не количество выбранных строк. Таким образом, результат запроса будет содержать 11 столбцов:col1,col2,col3,found_rows(10).