Maison > base de données > tutoriel mysql > Comment construire une requête récursive dans MySQL: Méthodes pour les versions 5.x et 8?

Comment construire une requête récursive dans MySQL: Méthodes pour les versions 5.x et 8?

DDD
Libérer: 2025-01-25 16:06:12
original
419 Les gens l'ont consulté

How to Build a Recursive Query in MySQL: Methods for Versions 5.x and 8 ?

Construire des méthodes de requête récursives dans mysql

MySQL fournit plusieurs méthodes pour créer des requêtes récursives. Voici plusieurs méthodes:

MySQL 8.0 et au-dessus des versions

Pour les versions MySQL 8.0 et supérieures, vous pouvez utiliser

grammaire:

WITH RECURSIVE

MySQL 5.x Version
<code class="language-sql">WITH RECURSIVE cte (id, name, parent_id) AS (
  SELECT id, name, parent_id
  FROM products
  WHERE parent_id = 19
  UNION ALL
  SELECT p.id, p.name, p.parent_id
  FROM products p
  JOIN cte ON p.parent_id = cte.id
)
SELECT * FROM cte;</code>
Copier après la connexion

Méthode 1: Évaluation des variables

Méthode deux: l'identifiant de style de chemin

<code class="language-sql">SELECT id,
       name,
       parent_id 
FROM   (SELECT * FROM products
         ORDER BY parent_id, id) products_sorted,
        (SELECT @pv := '19') initialisation
WHERE  FIND_IN_SET(parent_id, @pv)
AND    LENGTH(@pv := CONCAT(@pv, ',', id));</code>
Copier après la connexion

Si votre structure hiérarchique est exprimée dans la forme dans la colonne ID, vous pouvez utiliser les requêtes suivantes:

Méthode trois: auto-connection

<code class="language-sql">SELECT *
FROM products
WHERE id LIKE '19/%';</code>
Copier après la connexion
Vous pouvez utiliser l'auto-connexion pour atteindre la récursivité:

Choisissez la méthode qui répond le mieux à vos besoins et à la version 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!

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