Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Dalaman Dua Jadual Pelayan SQL Berdasarkan Nombor Baris?

Bagaimana untuk Menyertai Dalaman Dua Jadual Pelayan SQL Berdasarkan Nombor Baris?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-05 01:36:39842semak imbas

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

Inner Join on Row Number in SQL Server

Objektif: Lakukan cantuman dalaman pada dua jadual menggunakan barisnya nombor.

Senario:

Pertimbangkan dua jadual, A dan B, dengan data berikut:

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

Matlamatnya adalah untuk menyertai jadual berdasarkan nombor baris mereka dan dapatkan yang berikut output:

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

Penyelesaian:

Untuk melakukan cantuman dalaman pada nombor baris, gunakan fungsi ROW_NUMBER() seperti berikut:

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;

Pertanyaan ini mencipta jadual sementara untuk setiap jadual input (A dan B) dan memberikan nombor baris kepada setiap baris berdasarkan val lajur. Jadual kemudian digabungkan menggunakan lajur row_num, dan hasilnya diisih mengikut lajur val dalam kedua-dua jadual.

Pertimbangan Tambahan:

  • Jika tiada khusus pesanan dikehendaki, alih keluar klausa ORDER BY daripada fungsi ROW_NUMBER() untuk mengekalkan baris asal pesanan.

SQL Fiddle Demo:

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

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Dalaman Dua Jadual Pelayan SQL Berdasarkan Nombor Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn