MySQL Recursive Enquête: Données hiérarchiques de traitement à haute efficacité
De nombreux niveaux de structures de données, tels que les systèmes de fichiers ou les diagrammes de structure de tissu, nécessitent des méthodes efficaces pour récupérer des données en fonction des relations parent-enfant. MySQL fournit plusieurs méthodes pour écrire des requêtes récursives qui ont effectivement traversé ces structures.
MySQL 8 Solution de grammaire récursive
Remplacez simplement la valeur de à l'ID de nœud parent que vous souhaitez récupérer votre nœud enfant.
<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>
MySQL 5.x Solution d'ID de chemin parent_id = 19
Maintenant, les demandes suivantes récupéreront toutes les sous-nodes de catégorie 1:
ID | NAME |
---|---|
19 | category1 |
19/1 | category2 |
19/1/1 | category3 |
19/1/1/1 | category4 |
MySQL 5.x Variables de liaison interne et solutions d'auto-connexion
<code class="language-sql">SELECT * FROM products WHERE id LIKE '19%'</code>
Définissez la valeur dans comme l'ID de nœud parent du nœud pour récupérer son nœud enfant.
<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>
MySQL fournit une variété de méthodes pour écrire des requêtes récursives pour traiter les données hiérarchiques. La méthode à choisir dépend des exigences spécifiques de la version et de la requête MySQL. @pv := '19'
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!