Heim  >  Artikel  >  Datenbank  >  Wie kann ich eine verknüpfte Liste in MySQL ohne rekursive Abfragen abrufen?

Wie kann ich eine verknüpfte Liste in MySQL ohne rekursive Abfragen abrufen?

DDD
DDDOriginal
2024-11-01 01:22:28785Durchsuche

How Can I Fetch a Linked List in MySQL Without Recursive Queries?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn