sql >> Database >  >> RDS >> Mysql

mysql om diepte van het record te krijgen, ouder- en voorouderrecords te tellen

Als u veel van dit soort zoekopdrachten maakt, is het mogelijk dat een genest setmodel geschikter is dan de lijst met aangrenzende gebieden waar u naar vraagt. Er is een goede bespreking van beide modellen hier .

In ieder geval, om te doen wat je vraagt ​​met een aangrenzendheidslijst, kijk je naar ofwel recursie in de applicatielaag, ofwel sla je het niveau op als een 3e kolom.

ETA:als je niveau niet erg hoog is, kun je het doen met zelf-joins:

bijv. knooppunten met 2 voorouders:

SELECT t1.node 
FROM mytable AS t1
JOIN mytable AS t2 ON t1.parent = t2.node
JOIN mytable AS t3 ON t2.parent = t3.node
WHERE t3.parent IS NULL;



  1. SQLite datum- en tijdfuncties

  2. Hoe optimaliseer ik de zoekopdrachten van MySQL met constanten?

  3. Hoe kan ik een externe sleutelbeperking afdwingen van niet-gerelateerde tabellen in Mysql?

  4. MySQL - Verwijzen naar geaggregeerde kolom in where-clausule