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!