Maison > base de données > tutoriel mysql > Comment puis-je effectuer des requêtes récursives dans SQLite3 ?

Comment puis-je effectuer des requêtes récursives dans SQLite3 ?

DDD
Libérer: 2024-12-31 10:57:10
original
601 Les gens l'ont consulté

How Can I Perform Recursive Queries in SQLite3?

Requêtes récursives dans SQLite3 : un guide complet

Bien que SQLite3 ait historiquement manqué de prise en charge des requêtes récursives, des progrès récents ont introduit cette fonctionnalité avec le introduction d'expressions de table communes (CTE) dans la version 3.8.3.

Avec CTE récursifs (SQLite 3.8.3 ou supérieur)

SQLite3 propose désormais l'instruction WITH, qui permet la définition de CTE récursifs. À l'aide d'un CTE récursif, vous pouvez facilement effectuer des requêtes récursives :

WITH RECURSIVE Subparts AS (
    SELECT Part, SuperPart
    FROM Part
    WHERE SuperPart IS NULL
    UNION
    SELECT Part, SuperPart
    FROM Subparts
    JOIN Part
    ON Subparts.SuperPart = Part.Part
)
SELECT *
FROM Subparts;
Copier après la connexion

Requêtes récursives dans les versions antérieures de SQLite3

Avant la version 3.8.3, SQLite3 ne prenait pas en charge requêtes récursives. Cependant, une solution de contournement existe en implémentant la récursivité dans le code client :

  1. Étape initiale : Récupérez la ligne initiale et les ID de sous-partie.
SELECT Part, SuperPart
FROM Part
WHERE SuperPart IS NULL;
Copier après la connexion
  1. Étape récursive : Récupérer de manière récursive les lignes et les sous-parties ID des sous-parties.
SELECT Part, SuperPart
FROM Part
WHERE SuperPart IN (sub-part IDs from previous step);
Copier après la connexion
  1. Condition d'arrêt : Continuez la récursion jusqu'à ce qu'aucune sous-partie ne soit trouvée.

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