Abrufen einer verknüpften Liste in einer MySQL-Datenbank
Die Datenbankspeicherung verknüpfter Listen stellt einzigartige Herausforderungen dar. Im Gegensatz zu anderen RDBMS-Lösungen wie Oracle oder Microsoft SQL Server unterstützt MySQL keine rekursiven Abfragen, die zum direkten Abrufen verknüpfter Listendaten erforderlich sind.
Die Lösung für dieses Problem, ähnlich dem Speichern von Baumstrukturen in einem RDBMS, dreht sich um das Extrahieren die verknüpfte Liste aus der Datenbank und verarbeitet sie auf der Client-Seite. Dies wirft jedoch die Frage auf, ob es möglich ist, die Abfrage bei einer bestimmten Tiefe oder basierend auf Zeilenbedingungen zu beenden.
Während MySQL keine integrierten rekursiven Abfragefunktionen hat, gibt es eine etwas umständliche Problemumgehung:
<code class="sql">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);</code>
Einschränkungen dieser Abfrage sind die langsame Leistung und die Rückgabe aller Ergebnisse in einer einzelnen Zeile. Es bietet jedoch eine Möglichkeit, verknüpfte Listendaten in Schritten mit begrenzter Tiefe abzurufen.
Das obige ist der detaillierte Inhalt vonWie kann ich eine verknüpfte Liste in MySQL ohne rekursive Abfragen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!