如何编写SQL查询以将两个已经排序的表水平地与不同的列组合?

时间:2011-11-02 16:31:26

标签: sql sql-server sql-server-2008

我有两张桌子,我想和它们并排放置。例如,

tableOne                              tableTwo
columnOne | columnTwo | columnThree   columnI | columnII | columnIII

两个表中的数据不需要相关 - 表具有相同的行数 - 并且数据已经在两个表中排序。基本上,我想在没有full outer join运算符的情况下在两个表上执行on

如何在SQL查询中执行此操作?

1 个答案:

答案 0 :(得分:4)

嗯,你想要一个ON操作符 - 你似乎只是想让它自动工作,这不会发生。

如果你说tableOne的第1行映射到tableTwo的第1行,那么你需要为每个表添加一个行列,然后加入它。

如果你没有指定一个连接条件,你会做一个cross join,它将tableOne中的每一行连接到tableTwo中的每一行,这显然不是你想要的。

所以做这样的事情:

select * from 
  (select *, row_number() over (order by 1) as RN from tableOne) a
  inner join (select *, row_number() over (order by 1) as RN from tableTwo) b
     on a.RN = b.RN