Łapiesz
- identyfikator,
- najniższa data dla tego identyfikatora i
- dowolne z imion, które się z tym wiążą.
Inne (normalne) bazy danych nie pozwalają nawet na to zapytanie. Zmusiłyby cię do użycia funkcji agregującej dla nazwy lub dodaj nazwę do group by
również. MySQL zamiast tego wybiera losową wartość i pojawia się Twój problem.
Aby rozwiązać ten problem, Twoje zapytanie stanie się nieco bardziej złożone:
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)
Lub:
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