sql >> Database teknologi >  >> RDS >> Mysql

Hvilken forespørgsel ville jeg bruge til at få søskendeposter, når jeg bruger lukketabeller?

Søskende til en given node ville have samme forfader. Dette vil dog inkludere "1" såvel som din liste:

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

I din tabel er jeg ikke sikker på, hvad det betyder for ancestor at være det samme som descendant . Men jeg tror, ​​at følgende er den forespørgsel, du ønsker:

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:

Du kan gøre dette som en eksplicit deltag sådan her:

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;

Bemærk:Jeg tilføjede også betingelsen t.id <> 2 så "2" betragtes ikke som en søskende i sig selv.




  1. Mysql masseopdatering

  2. Kald en lagret procedure med parameter i c#

  3. Vis forældre-barn-relation, når forældre og barn er gemt i samme tabel

  4. Oracle TNS - kan ikke oprette forbindelse via ODBC Administrator