Вы можете использовать повторный запрос - доступен только в MySQL 8.0:
with recursive cte as (
select root_id parent_id, child_id from mytablbe where parent_id = :X
union all
select c.root_id, t.child_id
from cte c
inner join mytable t on t.parent_id = c.child_id
)
select * from cte where child_id = :Y
Этот запрос проверяет, является ли :X
родительским для :Y
: если да, то возвращается одна строка , иначе строка не возвращается.