Du griber
- id'et,
- den laveste dato for dette id, og
- enhver af de navne, der hører til.
Andre (normale) databaser vil ikke engang tillade denne forespørgsel. De ville tvinge dig til enten at bruge en samlet funktion for navn , eller tilføj navn til group by
såvel. MySQL vælger i stedet en tilfældig værdi, og der er dit problem.
For at løse dette vil din forespørgsel blive lidt mere kompleks:
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)
Eller:
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