• Как сделать SQL выборку по максимальной дате?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Если текущая версия СУБД поддерживает оконные функции - то ROW_NUMBER() в CTE и отбор по rn=1 во внешнем запросе.
    WITH cte AS (
        SELECT *, ROW_NUMBER() OVER (PARTITION BY list_name ORDER BY date DESC) rn
        FROM table
        )
    SELECT *
    FROM cte
    WHERE rn = 1

    Если не поддерживает - агрегирующий подзапрос, который для каждой категории получает максимальную дату, и отбор записей по этим значениям из другой копии таблицы.
    SELECT t1.*
    FROM table t1
    NATURAL JOIN (
        SELECT list_name, MAX(date) date
        FROM table
        GROUP BY 1
        )

    Оба запроса предполагают уникальность (list_name, date).
    Ответ написан
    Комментировать
  • Как сделать SQL выборку по максимальной дате?

    Adamos
    @Adamos
    Если записи последовательны (то есть поле с максимальной датой и пишется последним), а id - это autoincrement, можно обойтись простым
    SELECT MAX(`id`), `list_name`, MAX(`date`) FROM `LOG` GROUP BY `list_name`
    Ответ написан
    3 комментария