Для MySQL 8.0+ вы можете использовать LAG()
:
SELECT t.type, t.time, t.alt_id
FROM (SELECT *, LAG(type) OVER() prev FROM tablename) t
WHERE t.prev IS NULL OR t.prev <> t.type
См. Демонстрационную версию .Для предыдущих версий используйте переменные:
SET @rn := 0;
SET @type := null;
SELECT t.type, t.time, t.alt_id
FROM (
SELECT @rn := case
WHEN @type = type then @rn + 1
ELSE 1
END AS rn, type, time, alt_id,
@type := type
FROM tablename
) t
WHERE t.rn = 1
См. demo .Результаты:
| type | time | alt_id |
| ----------- | ---- | ------ |
| invest_fees | t1 | 5601 |
| countries | t4 | 5601 |
| invest_fees | t5 | 5601 |
| countries | t7 | 5601 |
| invest_fees | t9 | 5602 |
| countries | t10 | 5602 |