Afferri
- l'ID,
- la data più bassa per quell'ID e
- qualsiasi dei nomi che lo accompagnano.
Altri database (normali) non consentiranno nemmeno questa query. Ti costringerebbero a utilizzare una funzione di aggregazione per nome o aggiungi nome al group by
anche. MySQL invece sceglie un valore casuale e c'è il tuo problema.
Per risolvere questo problema, la tua query diventerà leggermente più complessa:
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)
Oppure:
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