mysql ma na to "oszustwo":
select *
from mytable
group by cid;
To wszystko, czego potrzebujesz, ponieważ w mysql pozwala nie agregować kolumny niepogrupowane według (inne bazy danych zgłaszałyby błąd składni), w którym to przypadku wyprowadza tylko pierwsze wystąpienie każdej wartości grupowanej według. Pamiętaj jednak, że nie gwarantuje to sposób w którym określane jest „pierwsze” wystąpienie (będzie to tylko sposób wczytywania wierszy)
Jeśli chcesz konkretnego pierwsze wystąpienie, najpierw posortuj, a następnie zastosuj kod grupowania według:
select *
from (
-- order by the "time" column descending to get the "most recent" row
select * from mytable order by time desc
) x
group by cid