Это работает на каждой mysql версии.
Но вы не указали, что должно произойти, если у двух одинаковый день рождения.
Второй результат показывает вам, что происходит с моим запросом .
CREATE TABLE persons (
`id` INTEGER,
`name` VARCHAR(7),
`birthdate` datetime,
`team_id` INTEGER
);
INSERT INTO persons
(`id`, `name`, `birthdate`, `team_id`)
VALUES
('1', 'person1', '1993-09-29 15:15:15', '1'),
('2', 'person2', '1994-09-29 15:15:15', '1'),
('3', 'person3', '1992-09-29 15:15:15', '2'),
('4', 'person4', '1990-09-29 15:15:15', '2');
✓
✓
SELECT
p.`id`, p.`name`, p.`birthdate`#
FROM
persons p INNER JOIN
(select team_id, min(birthdate) minbirth from persons group by team_id) mint
ON p.birthdate = mint.minbirth AND p.team_id = mint.team_id
ORDER By p.team_id,p.`id`
id | name | birthdate
-: | :------ | :------------------
1 | person1 | 1993-09-29 15:15:15
4 | person4 | 1990-09-29 15:15:15
INSERT INTO persons
(`id`, `name`, `birthdate`, `team_id`)
VALUES
('5', 'person5', '1993-09-29 15:15:15', '1'),
('6', 'person6', '1990-09-29 15:15:15', '2');
✓
SELECT
p.`id`, p.`name`, p.`birthdate`#
FROM
persons p INNER JOIN
(select team_id, min(birthdate) minbirth from persons group by team_id) mint
ON p.birthdate = mint.minbirth AND p.team_id = mint.team_id
ORDER By p.team_id,p.`id`
id | name | birthdate
-: | :------ | :------------------
1 | person1 | 1993-09-29 15:15:15
5 | person5 | 1993-09-29 15:15:15
4 | person4 | 1990-09-29 15:15:15
6 | person6 | 1990-09-29 15:15:15
дБ <> скрипка здесь