Middle
23
Как фильтровать только актуальные данные в SQL запросе?
Companies where asked
Answer from AI
sobes.tech AI
Чтобы фильтровать только актуальные данные в SQL-запросе, нужно определить критерии актуальности, которые зависят от контекста задачи. Обычно это:
- Фильтрация по дате или времени (например, последние записи, актуальные на текущий момент).
- Фильтрация по статусу (например, только активные записи).
- Использование флагов или признаков актуальности в таблице.
Пример: выбрать записи с максимальной датой обновления для каждого объекта:
SELECT t1.*
FROM data_table t1
JOIN (
SELECT object_id, MAX(updated_at) AS max_updated
FROM data_table
GROUP BY object_id
) t2 ON t1.object_id = t2.object_id AND t1.updated_at = t2.max_updated
WHERE t1.status = 'active';
Такой запрос вернёт только самые свежие и активные данные для каждого объекта.
Также можно использовать оконные функции для выбора актуальных данных:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY object_id ORDER BY updated_at DESC) AS rn
FROM data_table
WHERE status = 'active'
) sub
WHERE rn = 1;
Это позволит получить по одной актуальной записи на каждый объект.