Récupération de données à partir d'une liste chaînée dans une base de données MySQL
Dans une base de données MySQL avec une table contenant une structure de liste chaînée, telle que celle fourni :
table id INT NOT NULL PRIMARY KEY data .. next_id INT NULL
Le défi réside dans la récupération des données dans le même ordre que la liste chaînée. Malheureusement, MySQL ne prend pas directement en charge les requêtes récursives, qui sont nécessaires pour récupérer les structures de listes chaînées.
Cependant, il existe des approches pour contourner cette limitation. Une méthode consiste à parcourir manuellement la liste chaînée à l'aide de requêtes JOIN, comme indiqué dans la réponse donnée :
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);
Cette requête effectue effectivement un parcours en largeur de la liste chaînée, renvoyant toutes les lignes dans l'ordre de leur position dans la liste.
Alternativement, comme suggéré dans les commentaires, vous pouvez stocker les données de la liste chaînée dans une base de données NoSQL, qui offre généralement une meilleure prise en charge de la gestion des structures de données non relationnelles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!