Maison > base de données > tutoriel mysql > Comment récupérer tous les ID enfants dans une structure hiérarchique MySQL à l'aide d'une seule requête?

Comment récupérer tous les ID enfants dans une structure hiérarchique MySQL à l'aide d'une seule requête?

Barbara Streisand
Libérer: 2025-01-25 16:12:09
original
867 Les gens l'ont consulté

How to Retrieve All Child IDs in a MySQL Hierarchical Structure Using a Single Query?

Mysql Hiérarchical Recursive Query Method Creation Method

Question

Vous avez une table MySQL en couches, chacune ayant un ID, un nom et un ID parent. Vous souhaitez utiliser une seule requête MySQL pour récupérer tous les sous-id qui donnent l'ID parent.

Réponse

pour mysql 8:

Utiliser avec une syntaxe récursive:

pour mysql 5.x:

<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
  INNER JOIN cte
          ON p.parent_id = cte.id
)
SELECT * FROM cte;</code>
Copier après la connexion
en utilisant des variables internes, des identifiants de chemin ou de l'auto-connexion:

Variables néiliennes:

Identificateur de style de chemin:

La valeur d'ID de l'allocation d'informations hiérarchiques (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

Ensuite, utilisez cette requête:

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal