如何在SQL Server 中對行號執行內連線
在SQL Server 程式設計領域,如何執行的問題經常出現行號上的內連接。本文探討了該主題並提供了解決方案來幫助您實現所需的結果。
為了說明這個挑戰,請考慮兩個表A 和B,每個表都包含從上到下排序的值列表:
目標是對兩個表執行內部聯接,根據行號匹配行。預設情況下,SQL Server 不會提供按行號連線表的本機方法。但是,使用 ROW_NUMBER() 函數,我們可以建立一個虛擬列,為每個表中的每一行分配唯一的行號。
要在SQL Server 2008 中對行號執行內部聯接,您可以使用下列步驟:
-- 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
此查詢將傳回下列輸出:
透過符合行號,我們已經成功內連接了兩個表。
或者,如果您沒有特定的order-by 要求,您可以實現無需明確對錶進行排序即可獲得相同的結果:
-- 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
此查詢將按行出現的順序回傳行:
以上是如何在SQL Server中根據行號執行內連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!