Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Welche Abfrage würde ich verwenden, um Geschwisterdatensätze zu erhalten, wenn ich Abschlusstabellen verwende?

Die Geschwister eines bestimmten Knotens hätten denselben Vorfahren. Dies würde jedoch "1" sowie Ihre Liste enthalten:

select t.*
from table t 
where t.ancestor = (select ancestor from table t2 where t.id = 2);

In Ihrer Tabelle bin ich mir nicht sicher, was es für ancestor bedeutet dasselbe sein wie descendant . Aber ich denke, die folgende Abfrage ist die gewünschte:

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;

BEARBEITEN:

Sie können dies explizit tun treten Sie wie folgt bei:

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;

Hinweis:Ich habe auch die Bedingung t.id <> 2 hinzugefügt also wird "2" nicht als Geschwister von sich selbst betrachtet.