Вы должны быть в состоянии сделать это, используя дополнительный выбор (и DISTINCT
), чтобы найти всех потомков 4
:
Select Distinct *
From hierarchy
Start With id In ( Select id
From hierarchy
Where parent = 4 )
Connect By id = Prior parent
Используя UNION
, вы можете хотя бы удалить CONNECT BY
из вашего второго запроса:
Select *
From hierarchy
Start With id = 4
Connect By id = Prior parent
Union
Select *
From hierarchy
Where parent = 4
Никогда не используйте SELECT *
, всегда называйте столбцы, которые вам действительно нужны. Это облегчает чтение, обслуживание и оптимизацию вашего запроса.