Jij grijpt
- de id,
- de laagste datum voor die id, en
- elke van de namen die daarbij horen.
Andere (normale) databases laten deze zoekopdracht niet eens toe. Ze zouden je dwingen om ofwel een aggregatiefunctie te gebruiken voor name , of voeg naam toe naar de group by
ook. MySQL kiest in plaats daarvan een willekeurige waarde, en daar is je probleem.
Om dit op te lossen, wordt uw vraag iets complexer:
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)
Of:
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