sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag få förfäder-ID för godtyckligt rekursionsdjup i en SQL-fråga?

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

förutsatt att ditt bord heter T. oprövat dock. inte säker på vad som händer om d inte har tre föräldrar, förmodligen förstår du ingenting, kan försöka med LEFT JOIN för de fallen för att få NULL-värden för de fantastiska föräldrarna. Den sista JOIN är inte riktigt nödvändig eftersom du helt enkelt kan välja b.parent_id istället för a.id men, du vet, bara för att köra hem mönstret;)



  1. Summa med SQL-server RollUP - men bara sista sammanfattningen?

  2. Fördunkla känsliga uppgifter i dina genomförandeplaner

  3. Välj 2 kolumner och slå samman data

  4. PHP Fatalt fel:Ofångad PDOException:kunde inte hitta drivrutinen