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



我有两个表,我想并排放置,就像他们一样。例如,

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

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

如何在SQL查询中做到这一点?

好吧,你确实想要一个ON操作符——你似乎只是想让它自动工作,这是不会发生的。

如果你说tableOne的第一行映射到table2的第一行,那么你需要为每个表添加一个行列,然后在它上面连接。

如果你没有指定一个连接条件,你会做一个cross join连接每一行从table1到table2,这显然不是你想要的。

所以像这样做:

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

最新更新