Frage:
Gegeben sei eine MySQL-Datenbanktabelle mit der Struktur:
table id INT NOT NULL PRIMARY KEY data .. next_id INT NULL
Können Sie die Daten in der Reihenfolge der verknüpften Listen mithilfe einer Datenbankabfrage abrufen, ohne auf eine clientseitige Verarbeitung zurückgreifen zu müssen?
Antwort:
Leider unterstützt MySQL keine rekursiven Abfragen, die zum effizienten Abrufen verknüpfter Listendaten erforderlich sind. Dieses Problem ähnelt der Darstellung einer Baumstruktur in einer relationalen Datenbank.
Alternative Ansätze:
Alternative Methoden zum Speichern und Abrufen von Baumstrukturen finden Sie in den folgenden Fragen Daten aus einem relationalen Datenbanksystem:
Abfrage mit begrenzter Tiefe:
Wenn Sie die Tiefe des Abfrageergebnisses begrenzen möchten, können Sie den folgenden Ansatz verwenden, allerdings mit schlechte Leistung:
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);
Das Ergebnis wird für jede verknüpfte Liste in einer einzelnen Zeile zurückgegeben, aber die Abfrageleistung ist langsam.
Das obige ist der detaillierte Inhalt vonKann MySQL verknüpfte Listendaten ohne clientseitige Verarbeitung abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!