Se você estiver fazendo muitas consultas como essa, poderá descobrir que um modelo de conjunto aninhado é mais apropriado do que a lista de adjacências sobre a qual está perguntando. Há uma boa discussão de ambos os modelos aqui .
De qualquer forma, para fazer o que você está pedindo com uma lista de adjacências, você está analisando a recursão na camada do aplicativo ou armazenando o nível como uma 3ª coluna.
ETA:se sua contagem de níveis não for muito alta, você pode fazer isso com auto-junções:
por exemplo. nós com 2 ancestrais:
SELECT t1.node
FROM mytable AS t1
JOIN mytable AS t2 ON t1.parent = t2.node
JOIN mytable AS t3 ON t2.parent = t3.node
WHERE t3.parent IS NULL;