sql >> Database >  >> RDS >> Mysql

Welke query zou ik gebruiken om records voor broers en zussen te verkrijgen bij het gebruik van afsluittabellen?

De broers en zussen van een bepaald knooppunt zouden dezelfde voorouder hebben. Dit omvat echter zowel "1" als uw lijst:

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

In uw tabel weet ik niet zeker wat het betekent voor ancestor hetzelfde zijn als descendant . Maar ik denk dat het volgende de vraag is die je wilt:

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;

BEWERKEN:

U kunt dit doen als een expliciete doe zo mee:

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;

Opmerking:ik heb ook de voorwaarde t.id <> 2 . toegevoegd dus "2" wordt niet als een broer of zus van zichzelf beschouwd.




  1. Hoe controleer ik de NLS_LANG van de client?

  2. ProgrammingError:niet alle argumenten geconverteerd tijdens tekenreeksopmaak

  3. Monitor SQL Database via SP_WhoIsActive of FogLight | Problemen met SQL Server-prestaties oplossen -1

  4. Oracle-database:hoe lees ik een BLOB?