У меня есть схема таблицы, как это
и есть несколько записей в таблице для одного идентификатора пользователя.
Я хочу получить только те данные для каждого пользователя, для которого создан максимальный или последний.
Я пробовал много запросов, но это не работает. они выбирают самые старые данные.
я пробовал эти запросы
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
пожалуйста помоги
ты можешь использовать 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
)
Этот должен работать для вас:
SELECT * FROM
(
SELECT * FROM event_visitor
ORDER BY created DESC
) u
GROUP By user