выборка только самых последних данных в mysql для каждой записи

У меня есть схема таблицы, как это

  1. Пользователь (INT)
  2. создано (DateTime)
  3. метаданные

и есть несколько записей в таблице для одного идентификатора пользователя.

Я хочу получить только те данные для каждого пользователя, для которого создан максимальный или последний.

Я пробовал много запросов, но это не работает. они выбирают самые старые данные.
я пробовал эти запросы

  select user, metadata, max(created)
from event_visitor
group by user
order by max(created)

а также

  SELECT ev1.user, ev1.metadata, ev1.created
from event_visitor ev1
inner join event_visitor ev2
on ev1.user=ev2.user
where ev1.created > ev2.created
group by user

пожалуйста помоги

1

Решение

ты можешь использовать not exists выбрать только последнюю строку для каждого пользователя, проверив, что «поздней» записи для данного пользователя не существует

то есть

select user, metadata, created
from event_visitor ev
where not exists (
select 1 from event_visitor ev2
where ev2.user = ev.user
and ev2.created > ev.created
)
0

Другие решения

Этот должен работать для вас:

SELECT * FROM
(
SELECT * FROM event_visitor
ORDER BY created DESC
) u
GROUP By user

SQLFiddle

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector