Вы можете фильтровать с помощью коррелированного подзапроса:
select c.*
from connections_tbl c
where c.medium = (
select c1.medium
from connections_tbl c1
where c1.point1 = c.point1 and c1.point2 = c.point2
order by field(medium, 'air', 'train', 'road')
limit 1
) t
В качестве альтернативы, в MySQL 8.0 вы можете использовать row_number()
:
select point1, point2, medium
from (
select
c.*,
row_number() over(partition by point1, point2 order by field(medium, 'air', 'train', 'road')) rn
from connections_tbl c
) t
where rn = 1