Maison  >  Article  >  base de données  >  Comment récupérer des données à partir d’une structure de liste chaînée dans MySQL ?

Comment récupérer des données à partir d’une structure de liste chaînée dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 02:03:02773parcourir

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn