在 SQL Server 中按行号连接表
在 SQL Server 2008 中,您可以使用 ROW_NUMBER( ) 功能。此函数根据可选的排序规范为表中的每一行分配唯一的序列号。
垂直排序连接行的查询:
连接表 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;
水平排序连接行的查询:
如果要水平连接行而不排序,请将 ORDER BY 子句替换为 PARTITION经过子句:
SELECT A.val, B.val FROM ( SELECT val, ROW_NUMBER() OVER (PARTITION BY 1) AS row_num FROM A ) AS A JOIN ( SELECT val, ROW_NUMBER() OVER (PARTITION BY 1) AS row_num FROM B ) AS B ON A.row_num = B.row_num;
示例:
使用提供的示例表 A 和 B,第一个查询将产生以下输出:
RowA Row1 RowB Row2 RowC Row3 RowD Row4
第二个查询将产生此输出,表示水平连接:
RowA Row4 RowB Row3 RowC Row2 RowD Row1
以上是如何根据行号连接 SQL Server 表并控制顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!