Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich Vorfahren-IDs für eine beliebige Rekursionstiefe in einer SQL-Abfrage erhalten?

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

Angenommen, Ihre Tabelle heißt T. ungetestet. Ich bin mir nicht sicher, was passiert, wenn d keine drei Eltern hat, wahrscheinlich bekommen Sie nichts, versuchen Sie es mit LEFT JOIN für diese Fälle, um NULL-Werte für die großen Eltern zu erhalten. Außerdem ist der letzte JOIN nicht wirklich notwendig, weil Sie einfach b.parent_id anstelle von a.id auswählen könnten, aber, wissen Sie, nur um das Muster nach Hause zu fahren;)