Я хочу вернуть последние десять (полных) строк из таблицы, но при этом убедиться, что все они имеют уникальные 'alternate_id'.Если в первой десятке есть два человека с одинаковым alternate_id, мне все равно, какой я возьму, но я хочу один из них!Я думал, что буду использовать group by следующим образом:
select *
from track_history_items
where type='FooType'
group by alternate_id order by created_at desc limit 10;
, но это, кажется, вызывает проблемы (не удается вернуть строки с alternate_ids, которые определенно находятся в топ-10).Любые идеи, как я должен сделать это правильно?
* РЕШЕНИЕ * (я не могу опубликовать ответ, поскольку я 'я новый пользователь)
вот что я в итоге сделал:
SELECT field1,
...,
max(created_at),
...,
fieldN
FROM track_history_items
where type='FooType'
group by alternate_id
order by created_at desc
limit 10
Это, кажется, делает трюк.Думаю, что я опубликую это здесь, если это будет полезно другим, или есть какие-то ошибки, которые кто-то может заметить!