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)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д