SQL_CALC_FOUND_ROWS и found_rows() - MySQL

Узнай цену своей работы

Формулировка задачи:

Запрос не возвращает результат, т.е. условиям не соответствует ни одна строка, но found_rows() возвращает 1. Сам запрос:
Листинг программы
  1. SELECT
  2. SQL_CALC_FOUND_ROWS
  3. col1,
  4. col2,
  5. col3
  6. FROM TABLE t
  7. WHERE col3 = 99
  8. AND col1< curdate() - INTERVAL 1 DAY
  9. AND col2 NOT IN ('0' , '2', '3', '4', '5', '7', '8')
  10. LIMIT 10;
Но если добавить 1 в вывод, то found_rows() возвращает 0.
Листинг программы
  1. SELECT
  2. SQL_CALC_FOUND_ROWS
  3. col1,
  4. col2,
  5. col3,
  6. 1
  7. FROM TABLE t
  8. WHERE col3 = 99
  9. AND col1< curdate() - INTERVAL 1 DAY
  10. AND col2 NOT IN ('0' , '1')
  11. LIMIT 10;
Как испаравить? Не хочу, чтобы выводилась 1.

Решение задачи: «SQL_CALC_FOUND_ROWS и found_rows()»

textual
Листинг программы
  1. SELECT
  2.     SQL_CALC_FOUND_ROWS
  3.     col1,
  4.     col2,
  5.     col3,
  6.     1
  7. FROM TABLE t
  8. WHERE col3 = 99
  9.     AND col1< curdate() - INTERVAL 1 DAY
  10.     AND col2 NOT IN ('0' , '1')
  11. LIMIT 10;

Объяснение кода листинга программы

В данном коде выполняется SQL-запрос, который выбирает данные из таблицы TABLE с несколькими условиями:

  1. col3 = 99 - выбираются только строки, где значение столбца col3 равно 99.
  2. col1< curdate() - INTERVAL 1 DAY - выбираются только строки, где значение столбца col1 меньше текущей даты на один день.
  3. col2 NOT IN ('0' , '1') - выбираются только строки, где значение столбца col2 не равно 0 или 1. Затем, с помощью LIMIT 10, выбираются первые 10 строк. Кроме того, в начале запроса указано SQL_CALC_FOUND_ROWS, что означает, что функция found_rows() будет возвращать общее количество найденных строк, а не количество выбранных строк. Таким образом, результат запроса будет содержать 11 столбцов: col1, col2, col3, found_rows(10).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут