sql—将表a中的每一行与表b中的一行相关联,环绕

yi0zb3m4  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(347)

我想用另外两个表中的数据组合创建一个表。假设一号桌是这样的:

A
B
C
D
E
F

表二是这样的:

X
Y
Z

我想要的不是交叉连接,或者别的什么,我只想要a和b在一起,当b用完行时,重复,所以输出(表3)如下所示:

A X
B Y
C Z
D X
E Y
F Z

我不想添加或删除任何行。最终结果的行数应与表1中的行数完全相同。如果让它更简单的话,表1中的行数总是表2中行数的完美倍数,所以我不必担心部分匹配。如果表1有12行,那么表2将被重复4次而不是2次,结果仍然是12行。

6l7fqoea

6l7fqoea1#

可以使用模运算:

select o.*, t.*
from (select o.*, row_number() over (order by (select null)) as seqnum
      from one o
     ) o join
     (select t.*, row_number() over (order by (select null)) as seqnum,
             count(*) over () as cnt
      from two
     ) t
     on (o.seqnum - 1) % cnt = t.seqnum - 1

这将向每个表添加一个枚举值。然后使用模运算来匹配行。

相关问题