Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich zwei SQL Server-Tabellen basierend auf der Zeilennummer innerlich?

Wie verbinde ich zwei SQL Server-Tabellen basierend auf der Zeilennummer innerlich?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-05 01:36:39873Durchsuche

How to Inner Join Two SQL Server Tables Based on Row Number?

Inner Join für Zeilennummer in SQL Server

Ziel: Führen Sie einen Inner Join für zwei Tabellen mithilfe ihrer Zeile durch Zahlen.

Szenario:

Betrachten Sie zwei Tabellen A und B mit den folgenden Daten:

Table A Table B
RowA Row4
RowB Row3
RowC Row2
RowD Row1

Das Ziel besteht darin, die Tabellen basierend auf ihren Zeilennummern zu verbinden und die folgende Ausgabe abzurufen:

Table A Table B
RowA Row1
RowB Row2
RowC Row3
RowD Row4

Lösung:

Um einen Inner Join für Zeilennummern durchzuführen, verwenden Sie die Funktion ROW_NUMBER() als 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;

Diese Abfrage erstellt eine temporäre Tabelle für jede Eingabetabelle (A und B) und weist jeder Zeile Zeilennummern basierend auf der Val-Spalte zu. Die Tabellen werden dann mithilfe der Spalte „row_num“ verknüpft und die Ergebnisse werden nach der Spalte „val“ in beiden Tabellen sortiert.

Zusätzliche Überlegungen:

  • Wenn nicht spezifisch Wenn eine Reihenfolge gewünscht ist, entfernen Sie die ORDER BY-Klausel aus der Funktion ROW_NUMBER(), um die ursprüngliche Zeile beizubehalten bestellen.

SQL Fiddle Demo:

[SQL Fiddle Demo](https://www.sqlfiddle.com/#!18/69540/2 )

Das obige ist der detaillierte Inhalt vonWie verbinde ich zwei SQL Server-Tabellen basierend auf der Zeilennummer innerlich?. 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