sql >> Databasteknik >  >> RDS >> Mysql

Vilken fråga skulle jag använda för att få syskonposter när jag använder stängningstabeller?

Syskonen till en given nod skulle ha samma förfader. Detta skulle dock inkludera "1" såväl som din lista:

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

I din tabell är jag inte säker på vad det betyder för ancestor att vara samma som descendant . Men jag tror att följande är frågan du vill ha:

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öra detta som en explicit gå med så här:

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;

Obs:Jag har också lagt till villkoret t.id <> 2 så "2" anses inte vara ett syskon till sig själv.




  1. TIMESTAMPADD() Exempel – MySQL

  2. Hur man felsöker php/MySQL COUNT(id) som returnerar 1 istället för totalt inmatningsvärde

  3. Hur kontrollerar man tabellutrymme i Oracle SQL Developer?

  4. Finns det någon boolesk typ i Oracle-databaser?