Problemstellung:
Sie haben zwei Tabellen mit einem gemeinsamen Merkmal: ihren Zeilennummern . Ihr Ziel ist es, einen Inner Join für dieses Attribut durchzuführen und bestimmte Daten abzurufen.
Spezifisches Szenario:
Betrachten Sie zwei Tabellen, A und B, mit den folgenden Daten:
Tabelle A
RowA |
---|
RowB |
RowC |
RowD |
Tabelle B
Row4 |
---|
Row3 |
Row2 |
Row1 |
Gewünschte Ausgabe:
Lösung:
Um den gewünschten inneren Join für die Zeilennummer zu erreichen, können Sie die Funktion ROW_NUMBER() in SQL Server 2008 als verwenden folgt:
SELECT A.val, B.val FROM ( SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num FROM A ) AS A JOIN ( SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num FROM B ) AS B ON A.row_num = B.row_num ORDER BY A.val, B.val
Erklärung:
Alternatives Szenario:
Wenn Sie möchten, dass die Zeilen in derselben Reihenfolge wie in den einzelnen Tabellen ohne ORDER BY-Klausel angezeigt werden, ändern Sie sie die Abfrage an:
SELECT A.val, B.val FROM ( SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num FROM A ) AS A JOIN ( SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num FROM B ) AS B ON A.row_num = B.row_num
Diese Überarbeitung eliminiert die zusätzliche ORDER BY-Klausel und behält die ursprüngliche Reihenfolge der Zeilen bei.
Das obige ist der detaillierte Inhalt vonWie kann ich in SQL Server 2008 zwei Tabellen anhand ihrer Zeilennummern verbinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!