„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie verwendete ich eine rekursive Abfragegruppierung, um Produkte auf SQL Server abzustimmen?

Wie verwendete ich eine rekursive Abfragegruppierung, um Produkte auf SQL Server abzustimmen?

Gepostet am 2025-04-19
Durchsuche:793

How to Group Matched Products in SQL Server Using Recursive Queries?

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.

Neuestes Tutorial Mehr>

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