Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menyertai Dua Jadual Berdasarkan Nombor Barisnya dalam SQL Server 2008?

Bagaimanakah Saya Boleh Menyertai Dua Jadual Berdasarkan Nombor Barisnya dalam SQL Server 2008?

DDD
Lepaskan: 2024-12-25 00:44:10
asal
169 orang telah melayarinya

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

Menyertai Jadual pada Nombor Baris

Pernyataan Masalah:

Anda mempunyai dua jadual dengan ciri yang sama: nombor barisnya . Matlamat anda adalah untuk melakukan gabungan dalaman pada atribut itu dan mendapatkan semula data tertentu.

Senario Khusus:

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

Jadual A

RowA
RowB
RowC
RowD

Jadual B

Row4
Row3
Row2
Row1

Output yang Diingini:

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

Penyelesaian:

Untuk mencapai cantuman dalaman yang diingini pada nombor baris, anda boleh menggunakan fungsi ROW_NUMBER() dalam SQL Server 2008 sebagai 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
Salin selepas log masuk

Penjelasan:

  • Fungsi ROW_NUMBER() memberikan nombor jujukan kepada setiap baris dalam jadual, berdasarkan ORDER BY yang ditentukan klausa.
  • Syarat gabungan A.row_num = B.row_num sepadan dengan baris dengan nombor baris yang sama, memastikan penjajaran cantuman pada atribut nombor baris.
  • Klausa ORDER BY A.val, B.val memastikan bahawa baris keluaran disusun mengikut urutan jadual A dan jadual B.

Alternatif Senario:

Jika anda menghendaki baris muncul dalam susunan yang sama seperti dalam jadual individu tanpa klausa ORDER BY, ubah suai pertanyaan kepada:

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
Salin selepas log masuk

Ini semakan menghapuskan klausa ORDER BY tambahan, mengekalkan urutan baris asal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyertai Dua Jadual Berdasarkan Nombor Barisnya dalam SQL Server 2008?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan