SQL Server: Rekursive Abfrage für die Gruppierung übereinstimmter Produkte
in einer relationalen Datenbanktabelle mit dem Namen "Übereinstimmungen", jedes Datensatz repräsentiert eine Übereinstimmung zwischen zwei Produkten. Ziel ist es, eine "Gruppen" -Tabelle zu erstellen, die diese Übereinstimmungen in einer hierarchischen Struktur erfasst. Insbesondere sollte die Spalte "Group_id" die Mindestprodukt -ID unter denen speichern, die zur gleichen Gruppe gehören. Eine rekursive Abfrage führt mehrere Operationsrunden für dieselben Daten durch. Hier ist eine Lösung, die einen gemeinsamen Tabellenausdruck (CTE) verwendet, um rekursive Operationen zu verfolgen:
mit CTE ALS ( Wählen Sie eindeutig M1.Product_id als Group_ID, M1.Product_id Aus den Spielen M1 Links Join Matches m2 Auf m1.product_id = m2.matching_product_id Wobei m2.matching_product_id null ist Gewerkschaft alle WÄHLEN C.Group_id, M.matching_product_id Aus cte c Beitritt zu Matches m Auf c.product_id = m.product_id ) Wählen Sie * aus CTE Order by Group_id
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
Wählen Sie Unterscheidungsmerkmal aus M1.Product_id als Group_ID, M1.Product_id Aus den Spielen M1 Links Join Matches m2 Auf m1.product_id = m2.matching_product_id Wobei m2.matching_product_id null
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
auswählen C.Group_id, M.matching_product_id Aus cte c Beitritt zu Matches m Auf c.product_id = m.product_id
SELECT C.Group_ID, M.matching_Product_Id FROM CTE C JOIN matches M ON C.Product_ID = M.Product_ID
Durch die Nutzung der rekursiven Funktionen von SQL -Server können wir komplexe hierarchische Muster und gruppenbezogene Daten in komplexen Datenbankstrukturen effizient extrahieren.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3