Maison  >  Article  >  base de données  >  Comment récupérer les données d'une liste chaînée à partir d'une base de données MySQL dans le bon ordre ?

Comment récupérer les données d'une liste chaînée à partir d'une base de données MySQL dans le bon ordre ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 13:03:29183parcourir

How to Fetch Linked List Data from a MySQL Database in the Correct Order?

Récupérer une liste chaînée à partir d'une base de données MySQL

Récupérer des données à partir d'une structure de liste chaînée stockée dans une base de données MySQL dans le bon ordre peut être difficile, car MySQL ne prend pas en charge les requêtes récursives.

Solution 1 : jointures imbriquées

Bien que MySQL ne fournisse pas de prise en charge native des requêtes récursives, vous pouvez obtenir un effet similaire en utilisant des requêtes imbriquées. rejoint. En joignant plusieurs instances de la même table, vous pouvez parcourir la liste chaînée dans l'ordre. La requête suivante illustre cette approche, mais il convient de noter qu'elle peut être inefficace pour les grandes listes chaînées en raison de sa structure imbriquée :

<code class="sql">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);</code>

Solution 2 : Analyse externe

Une autre solution consiste à récupérer les données de manière non ordonnée à l'aide d'une requête SELECT standard, puis à analyser la structure de la liste chaînée côté client. Cette approche est plus efficace pour les structures de données arborescentes complexes.

Solutions logicielles externes

Certaines marques de bases de données, telles qu'Oracle et Microsoft SQL Server, proposent des SQL supplémentaires syntaxe pour les requêtes récursives. Cependant, cette fonctionnalité n'est pas prise en charge par MySQL.

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