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

Verknüpfte Liste in MySQL-Datenbank abrufen

Einige Datenbankmarken (z. B. Oracle, Microsoft SQL Server) unterstützen zusätzliche SQL-Syntax, um "rekursive Abfragen" auszuführen, aber MySQL unterstützt keine solche Lösung.

Das Problem, das Sie beschreiben, ist dasselbe wie die Darstellung einer Baumstruktur in einer SQL-Datenbank. Du hast nur einen langen, dünnen Baum.

Es gibt mehrere Lösungen zum Speichern und Abrufen dieser Art von Datenstruktur aus einem RDBMS. Siehe einige der folgenden Fragen:

Da Sie erwähnen, dass Sie die von der Abfrage zurückgegebene "Tiefe" begrenzen möchten, können Sie dies beim Abfragen der Liste auf diese Weise erreichen:

SELECT * FROM mytable t1
 LEFT JOIN mytable t2 ON (t1.next_id = t2.id)
 LEFT JOIN mytable t3 ON (t2.next_id = t3.id)
 LEFT JOIN mytable t4 ON (t3.next_id = t4.id)
 LEFT JOIN mytable t5 ON (t4.next_id = t5.id)
 LEFT JOIN mytable t6 ON (t5.next_id = t6.id)
 LEFT JOIN mytable t7 ON (t6.next_id = t7.id)
 LEFT JOIN mytable t8 ON (t7.next_id = t8.id)
 LEFT JOIN mytable t9 ON (t8.next_id = t9.id)
 LEFT JOIN mytable t10 ON (t9.next_id = t10.id);

Es verhält sich wie Melasse, und das Ergebnis wird in einer Zeile (pro verknüpfter Liste) zurückgegeben, aber Sie erhalten das Ergebnis.