sql >> Database >  >> RDS >> Mysql

Hoe kan ik voorouder-ID's krijgen voor willekeurige recursiediepte in één SQL-query?

SELECT c.id, b.id, a.id 
FROM T 
INNER JOIN T AS c on T.parent_id=c.id 
INNER JOIN T AS b ON c.parent_id = b.id 
INNER JOIN T as a ON b.parent_id = a.id

er van uitgaande dat je tafel T. heet, is echter niet getest. niet zeker wat er gebeurt als d geen drie ouders heeft, waarschijnlijk krijg je niets, zou LEFT JOIN kunnen proberen voor die gevallen om NULL-waarden voor de geweldige ouders te verkrijgen. Ook is de laatste JOIN niet echt nodig omdat je gewoon b.parent_id kunt selecteren in plaats van a.id, maar, weet je, gewoon om het patroon naar huis te rijden;)



  1. Hoe vind je unieke paren uit twee kolommen in SQL?

  2. Hoe te repareren "Het partitieschema '...' heeft geen volgende gebruikte bestandsgroep" in SQL Server

  3. Datums, tijden en intervallen weergeven in PostgreSQL

  4. Query Store:de impact van indexen op bijlagen weergeven