Du greifst
- die ID,
- das niedrigste Datum für diese ID und
- beliebig der dazugehörigen Namen.
Andere (normale) Datenbanken erlauben nicht einmal diese Abfrage. Sie würden Sie zwingen, entweder eine Aggregatfunktion für name zu verwenden , oder fügen Sie Name hinzu zu group by
auch. MySQL wählt stattdessen einen zufälligen Wert aus, und da ist Ihr Problem.
Um dies zu lösen, wird Ihre Abfrage etwas komplexer:
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)
Oder:
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