Maison > base de données > tutoriel mysql > Comment une requête SQL récursive peut-elle regrouper les produits correspondants par ID de produit minimum ?

Comment une requête SQL récursive peut-elle regrouper les produits correspondants par ID de produit minimum ?

Barbara Streisand
Libérer: 2025-01-05 11:27:39
original
278 Les gens l'ont consulté

How Can a Recursive SQL Query Group Matching Products by Minimum Product ID?

Requête récursive dans SQL Server

Pour récupérer les produits correspondants regroupés par leur ID de produit minimum, une requête récursive peut être utilisée. Cette requête parcourt une table, traverse les relations Product_ID et accumule les résultats dans une table de groupes distincte. La structure récursive garantit que toutes les correspondances sont identifiées et incluses dans les résultats.

Solution :

WITH CTE
AS
(
    SELECT DISTINCT
        M1.Product_ID AS Group_ID,
        M1.Product_ID
    FROM matches M1
        LEFT JOIN matches M2
            ON M1.Product_Id = M2.matching_Product_Id
    WHERE M2.matching_Product_Id IS NULL
    UNION ALL
    SELECT
        C.Group_ID,
        M.matching_Product_Id
    FROM CTE C
        JOIN matches M
            ON C.Product_ID = M.Product_ID
)
SELECT * FROM CTE ORDER BY Group_ID
Copier après la connexion

Dans cette requête, le CTE est une définition récursive qui identifie le Product_ID minimum pour chaque groupe. La requête commence par sélectionner les Product_ID qui n'ont pas de Product_Id correspondant, créant ainsi les groupes initiaux. Dans l'étape récursive, la requête joint le CTE à la table des correspondances pour identifier les Product_ID correspondants et les ajouter aux groupes. Ce processus se poursuit jusqu'à ce que toutes les correspondances soient traitées.

Le résultat final est une table nommée groups qui contient le MIN Product_ID pour chaque groupe, ainsi que tous les Product_ID qui appartiennent à ce groupe. Cette structure permet des requêtes efficaces sur les relations et les regroupements de produits.

Remarque :

Pour contrôler la profondeur de récursion, utilisez la clause OPTION(MAXRECURSION n), en remplaçant n par le niveau de récursion maximum souhaité.

Exemple : SQL Fiddle Démo

https://www.sqlfiddle.com/#!18/c772e/11

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
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