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:
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
Penjelasan:
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
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!