問題陳述:
您有兩個具有共同特徵的表:它們的行號。您的目標是對該屬性執行內部聯結並檢索特定資料。
特定場景:
考慮兩個表A 和B,其中包含以下數據:
桌子A
RowA |
---|
RowB |
RowC |
RowD |
桌子A
Row4 |
---|
Row3 |
Row2 |
Row1 |
桌子A
表B
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
所需輸出:
RowD Row4
解決方案:
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
要實現所需的行號內連接,您可以使用 SQL Server 2008 中的 ROW_NUMBER()函數作為如下:
說明:ROW_NUMBER() 函數根據指定的ORDER BY 為表中的每一行分配一個序號連接條件A.row_num = B.row_num符合行號相同的行,確保行號屬性上的連線對齊。 ORDER BY A.val, B.val 子句確保輸出行依照表 A 和表 B 的順序排序。 替代方案:如果您要求行的顯示順序與它們在中的順序相同對於沒有ORDER BY 子句的各個表,將查詢修改為:此修訂消除了額外的ORDER BY 子句,保留了原始的行順序。以上是在 SQL Server 2008 中如何根據行號連接兩個表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!