Грабваш
- идентификаторът,
- най-ниската дата за този идентификатор и
- всякакво от имената, които вървят с него.
Други (нормални) бази данни дори няма да позволят тази заявка. Те биха ви принудили или да използвате агрегатна функция за name , или добавете име към group by
както и Вместо това MySQL избира произволна стойност и това е вашият проблем.
За да разрешите това, вашата заявка ще стане малко по-сложна:
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)
Или:
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