Последние n записей пока поле parent_id IS NULL достигнет 3 раз - MySQL

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

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

Помогите сделать выборку как на скриншоте

Решение задачи: «Последние n записей пока поле parent_id IS NULL достигнет 3 раз»

textual
Листинг программы
SET @null_num := 0;
 
SELECT * FROM t WHERE created_at > (
    SELECT created_at FROM (
        SELECT t.created_at, (CASE WHEN parent_id IS NULL THEN @null_num := @null_num + 1  END) AS null_num
        FROM t
        ORDER BY created_at DESC
    ) AS t WHERE null_num = 3
)

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

В этом коде:

  1. SET @null_num := 0; — это подготовительный этап, где в переменной null_num устанавливается начальное значение 0.
  2. SELECT * FROM t WHERE created_at > (...) — это основная часть запроса. Здесь выбираются все строки из таблицы t, где значение поля created_at больше, чем результат запроса в скобках.
  3. (SELECT created_at FROM (...)) — это вложенный запрос, который вычисляет значение для каждой строки таблицы t, и затем сортирует результаты в порядке убывания.
  4. WHERE null_num = 3 — это условие, которое ограничивает результаты только теми строками, где значение null_num равно 3.
  5. ORDER BY created_at DESC — это часть запроса, которая сортирует результаты по дате в обратном порядке.
  6. SELECT t.created_at, (CASE WHEN parent_id IS NULL THEN @null_num := @null_num + 1 END) AS null_num — это часть вложенного запроса, которая подсчитывает количество строк с parent_id равным NULL и увеличивает значение null_num на 1.
  7. FROM t — это часть запроса, которая указывает, что таблица для выборки — это t. Таким образом, этот запрос выбирает последние 3 строки, где поле parent_id равно NULL.

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


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

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

13   голосов , оценка 4.077 из 5
Похожие ответы