问题陈述:
您有两个具有共同特征的表:它们的行号。您的目标是对该属性执行内部联接并检索特定数据。
特定场景:
考虑两个表 A 和 B,其中包含以下数据:
桌子A
RowA |
---|
RowB |
RowC |
RowD |
表 B
Row4 |
---|
Row3 |
Row2 |
Row1 |
所需输出:
解决方案:
要实现所需的行号内连接,您可以使用 SQL Server 2008 中的 ROW_NUMBER() 函数作为如下:
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 子句的各个表,将查询修改为:
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 子句,保留了原始的行顺序。
以上是在 SQL Server 2008 中如何根据行号连接两个表?的详细内容。更多信息请关注PHP中文网其他相关文章!