Agarras
- la identificación,
- la fecha más baja para esa identificación, y
- cualquiera de los nombres que lo acompañan.
Otras bases de datos (normales) ni siquiera permitirán esta consulta. Te obligarían a usar una función agregada para nombre o añade nombre al group by
así como. MySQL, en cambio, elige un valor aleatorio, y ahí está tu problema.
Para resolver esto, su consulta se volverá un poco más compleja:
select
t.id,
t.mydate,
t.name
from
myTable t
where
t.mydate =
(select
min(td.mydate)
from
myTable td
where
td.id = t.id)
O:
select
t.id,
t.mydate as date,
t.name
from
myTable t
inner join
(select
td.id
min(td.mydate) as date
from
myTable td
group by
td.id) tx on tx.id = t.id and tx.date = t.mydate