Heim  >  Artikel  >  Datenbank  >  Wie rufe ich Daten aus einer verknüpften Listenstruktur in MySQL ab?

Wie rufe ich Daten aus einer verknüpften Listenstruktur in MySQL ab?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 02:03:02776Durchsuche

How to Fetch Data from a Linked List Structure in MySQL?

Abrufen von Daten aus einer verknüpften Liste in einer MySQL-Datenbank

In einer MySQL-Datenbank mit einer Tabelle, die eine verknüpfte Listenstruktur wie diese enthält vorausgesetzt:

table
    id INT NOT NULL PRIMARY KEY
    data ..
    next_id INT NULL

Die Herausforderung besteht darin, Daten in derselben Reihenfolge wie die verknüpfte Liste abzurufen. Leider unterstützt MySQL rekursive Abfragen, die zum Abrufen verknüpfter Listenstrukturen erforderlich sind, nicht direkt.

Es gibt jedoch Ansätze, diese Einschränkung zu umgehen. Eine Methode besteht darin, die verknüpfte Liste mithilfe von JOIN-Abfragen manuell zu durchlaufen, wie in der angegebenen Antwort gezeigt:

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);

Diese Abfrage führt effektiv einen Durchlauf der verknüpften Liste in der Breite zuerst durch und gibt alle Zeilen in der Reihenfolge zurück ihre Position in der Liste.

Alternativ können Sie, wie in den Kommentaren vorgeschlagen, die Daten der verknüpften Liste in einer NoSQL-Datenbank speichern, was normalerweise eine bessere Unterstützung für den Umgang mit nicht relationalen Datenstrukturen bietet.

Das obige ist der detaillierte Inhalt vonWie rufe ich Daten aus einer verknüpften Listenstruktur in MySQL ab?. 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