Maison > base de données > tutoriel mysql > le corps du texte

Comment puis-je récupérer une liste chaînée dans MySQL sans requêtes récursives ?

DDD
Libérer: 2024-11-01 01:22:28
original
834 Les gens l'ont consulté

How Can I Fetch a Linked List in MySQL Without Recursive Queries?

Récupérer une liste chaînée dans la base de données MySQL

Le stockage dans une base de données de listes chaînées pose des défis uniques. Contrairement à d'autres solutions SGBDR telles qu'Oracle ou Microsoft SQL Server, MySQL ne prend pas en charge les requêtes récursives nécessaires à la récupération directe des données de liste chaînée.

La solution à ce problème, semblable au stockage des structures arborescentes dans un SGBDR, consiste à extraire la liste chaînée de la base de données et son traitement côté client. Cependant, cela soulève la question de savoir s'il est possible de terminer la requête à une certaine profondeur ou en fonction des conditions de ligne.

Bien que MySQL ne dispose pas de fonctionnalités de requête récursive intégrées, il existe une solution de contournement quelque peu lourde :

<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>
Copier après la connexion

Les limitations de cette requête sont ses performances lentes et le retour de tous les résultats sur une seule ligne. Cependant, il fournit un moyen de récupérer les données d'une liste chaînée par incréments limités en profondeur.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal