Saudara kandung dari simpul yang diberikan akan memiliki nenek moyang yang sama. Namun, ini akan mencakup "1" serta daftar Anda:
select t.*
from table t
where t.ancestor = (select ancestor from table t2 where t.id = 2);
Di tabel Anda, saya tidak yakin apa artinya ancestor
sama dengan descendant
. Tapi, menurut saya berikut ini adalah kueri yang Anda inginkan:
select t.*
from table t
where t.ancestor = (select ancestor from table t2 where t2.id = 2) and
t.ancestor <> t.descendant and
t.id <> 2;
EDIT:
Anda dapat melakukan ini sebagai eksplisit bergabung seperti ini:
select t.*
from table t join
table t2
on t.ancestor = t2.ancestor and
t2.id = 2 a
where t.id <> 2 and
t.ancestor <> t.descendant;
Catatan:Saya juga menambahkan kondisi t.id <> 2
jadi "2" tidak dianggap sebagai saudara kandungnya sendiri.