@screameryo

Уникальные записи с самой свежей датой?

Есть таблица c полями
name (text) | dateism (text) | idshare (text)

и данными вида
ваня | 22.06.2009 0:00:00 | 0EEBFCEE7A94BB4BC2256F8800412BAB
саша | 18.08.2015 0:00:00 | 0EEBFCEE7A94BB4BC2256F8800412BAB
маша | 18.08.2015 0:00:00 | 4CEAD91D74FA15FFC2257046004453D0

необходимо получить итоговую выборку
саша | 18.08.2015 0:00:00 | 0EEBFCEE7A94BB4BC2256F8800412BAB
маша | 18.08.2015 0:00:00 | 4CEAD91D74FA15FFC2257046004453D0

т.е. выбрать все уникальные idshare, там где встречается дублирование idshare оставлять самую свежую по dateism.
не могу дойти как правильно составить вопрос.
  • Вопрос задан
  • 298 просмотров
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
Делаете вложенную таблицу с группировкой по t.idshare и MAX(dateism) и соединяете с основной

select m.idshare, m.dateism, t.text
from (
  select t.idshare, MAX(t.dateism) from tablename as t
  group by t.idshare
) as m
left join tablename as t on m.idshare = t.idshare and m.dateism = t.dateism
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для MySQL 8:
SELECT DISTINCT
       LAST_VALUE(`name`) OVER `win` AS `last_name`,
       LAST_VALUE(`dateism`) OVER `win` AS `last_dateism`,
       `idshare`
  FROM `table`
  WINDOW `win` AS (
    PARTITION BY `idshare`
    ORDER BY `dateism`
    RANGE BETWEEN UNBOUNDED PRECEDING
      AND UNBOUNDED FOLLOWING
  )

Только функцию для сортировки ORDER BY по своей кривой дате придумывайте самостоятельно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы