Heim > Datenbank > MySQL-Tutorial > Wie führe ich einen Inner Join basierend auf Zeilennummern in SQL Server durch?

Wie führe ich einen Inner Join basierend auf Zeilennummern in SQL Server durch?

Mary-Kate Olsen
Freigeben: 2024-12-20 11:38:10
Original
211 Leute haben es durchsucht

How to Perform an Inner Join Based on Row Numbers in SQL Server?

So führen Sie einen Inner Join für die Zeilennummer in SQL Server durch

Im Bereich der SQL Server-Programmierung stellt sich die Frage nach der Durchführung Es kommt häufig zu einer inneren Verknüpfung der Zeilennummer. Dieser Artikel befasst sich mit dem Thema und bietet Lösungen, die Ihnen dabei helfen, die gewünschten Ergebnisse zu erzielen.

Um die Herausforderung zu veranschaulichen, betrachten Sie zwei Tabellen, A und B, die jeweils eine Liste von Werten enthalten, die von oben nach unten geordnet sind:

  • Tabelle A: ZeileA, ZeileB, ZeileC, ZeileD
  • Tabelle B: Zeile4, Zeile3, Zeile2, Zeile1

Das Ziel besteht darin, eine innere Verknüpfung der beiden Tabellen durchzuführen und Zeilen anhand ihrer Zeilennummern abzugleichen. Standardmäßig bietet SQL Server keine native Möglichkeit, Tabellen anhand von Zeilennummern zu verknüpfen. Mit der Funktion ROW_NUMBER() können wir jedoch eine virtuelle Spalte erstellen, die jeder Zeile in jeder Tabelle eine eindeutige Zeilennummer zuweist.

Um einen Inner Join für Zeilennummern in SQL Server 2008 durchzuführen, können Sie verwenden die folgenden Schritte:

-- Create a virtual column with row numbers for Table A
SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num
FROM A

-- Create a virtual column with row numbers for Table B
SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num
FROM B

-- Join the two tables on the row number virtual columns
SELECT A.val, B.val
FROM (
  SELECT val, row_num
  FROM A
) AS A
INNER JOIN (
  SELECT val, row_num
  FROM B
) AS B
ON A.row_num = B.row_num
ORDER BY A.val, B.val
Nach dem Login kopieren

Diese Abfrage gibt die folgende Ausgabe zurück:

  • RowA Zeile1
  • ZeileB Zeile2
  • ZeileC Zeile3
  • ZeileD Zeile4

Durch den Abgleich der Zeilennummern haben wir die beiden Tabellen erfolgreich miteinander verbunden.

Alternativ können Sie, wenn Sie keine spezifische Order-by-Anforderung haben, das gleiche Ergebnis auch ohne explizite Reihenfolge erzielen Sortieren der Tabellen:

-- Create a virtual column with row numbers for Table A
SELECT val, ROW_NUMBER() OVER () AS row_num
FROM A

-- Create a virtual column with row numbers for Table B
SELECT val, ROW_NUMBER() OVER () AS row_num
FROM B

-- Join the two tables on the row number virtual columns
SELECT A.val, B.val
FROM (
  SELECT val, row_num
  FROM A
) AS A
INNER JOIN (
  SELECT val, row_num
  FROM B
) AS B
ON A.row_num = B.row_num
ORDER BY A.row_num
Nach dem Login kopieren

Diese Abfrage gibt die Zeilen in der Reihenfolge zurück, in der sie ausgegeben werden:

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

Das obige ist der detaillierte Inhalt vonWie führe ich einen Inner Join basierend auf Zeilennummern in SQL Server durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage