Rekursiver SQL Server-Self-Join: eine einfache Methode
In der Datenbankverwaltung ist die rekursive Selbstverknüpfung eine Technologie, die es Tabellen ermöglicht, sich mehrmals selbst zu verknüpfen und hierarchische Daten zu durchlaufen. In SQL Server kann dies durch rekursive Abfragen erreicht werden.
Stellen Sie sich das folgende Szenario vor: Wir haben eine Tabelle namens „Person“ mit den folgenden Spalten:
<code>PersonID | Initials | ParentID</code>
Die Tabelle stellt eine Hierarchie dar, in der jede Person eine Spalte „Initialen“ und möglicherweise eine „Eltern-ID“ hat, die auf eine andere Person verweist.
Um einen rekursiven Self-Join für die Tabelle „Person“ durchzuführen, können wir einen allgemeinen Tabellenausdruck (CTE) verwenden, wie unten gezeigt:
<code class="language-sql">WITH q AS ( SELECT * FROM Person WHERE ParentID IS NULL UNION ALL SELECT m.* FROM Person m JOIN q ON m.parentID = q.PersonID ) SELECT * FROM q</code>
In diesem CTE:
Um die Reihenfolge des Baums beizubehalten, können Sie in der rekursiven Abfrage Sortierbedingungen wie folgt hinzufügen:
<code class="language-sql">WITH q AS ( SELECT m.*, CAST(ROW_NUMBER() OVER (ORDER BY m.PersonId) AS VARCHAR(MAX)) COLLATE Latin1_General_BIN AS bc FROM Person m WHERE ParentID IS NULL UNION ALL SELECT m.*, q.bc + '.' + CAST(ROW_NUMBER() OVER (PARTITION BY m.ParentID ORDER BY m.PersonID) AS VARCHAR(MAX)) COLLATE Latin1_General_BIN FROM Person m JOIN q ON m.parentID = q.PersonID ) SELECT * FROM q ORDER BY bc</code>
Sie können die Reihenfolge der gleichgeordneten Elemente in der Hierarchie steuern, indem Sie die Bedingung ORDER BY ändern.
Das obige ist der detaillierte Inhalt vonWie kann ich in SQL Server rekursive Selbstverknüpfungen durchführen, um hierarchische Daten zu durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!