如何编写一个SQL查询以将两个已经排序的表水平合并到不同的列中?

cub*_*729 0 sql sql-server sql-server-2008

我有两个表,它们要完全按原样并排放置。例如,

tableOne                              tableTwo
columnOne | columnTwo | columnThree   columnI | columnII | columnIII
Run Code Online (Sandbox Code Playgroud)

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

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

Der*_*omm 5

好吧,您确实想要一个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
Run Code Online (Sandbox Code Playgroud)