Heim >Datenbank >MySQL-Tutorial >Wie kann ich in SQL Server 2008 zwei Tabellen anhand ihrer Zeilennummern verbinden?

Wie kann ich in SQL Server 2008 zwei Tabellen anhand ihrer Zeilennummern verbinden?

DDD
DDDOriginal
2024-12-25 00:44:10155Durchsuche

How Can I Join Two Tables Based on Their Row Numbers in SQL Server 2008?

Tabellen anhand der Zeilennummer verbinden

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:

  • RowA Row1
  • RowB Row2
  • RowC Row3
  • RowD Zeile4

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:

  • Die Funktion ROW_NUMBER() weist jeder Zeile innerhalb einer Tabelle eine Sequenznummer zu, basierend auf dem angegebenen ORDER BY Klausel.
  • Die Join-Bedingung A.row_num = B.row_num gleicht Zeilen mit identischen Zeilennummern ab und stellt so die Ausrichtung des Joins sicher das Zeilennummernattribut.
  • Die ORDER BY A.val, B.val-Klausel stellt sicher, dass die Ausgabezeilen in der Reihenfolge von Tabelle A und Tabelle B geordnet werden.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn