SQL - 在没有密钥的情况下加入两个表

Sla*_*aSt 1 sql oracle select join

给出两个表(count(Table1) <= count(Table2)):

表格1:

record-1 
record-2 
... 
record-k
Run Code Online (Sandbox Code Playgroud)

表2:

promo-1
promo-2
...
promo-j
Run Code Online (Sandbox Code Playgroud)

是否可以将它们加入下表?即在Table1某个条目中分配每个条目Table2,但是没有两个条目Table1对应于相同的条目Table2.

结果:

record-1    promo-i1
record-2    promo-i2
...
record-n    promo-in
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 5

您可以使用rownum伪列创建假密钥,并根据以下内容进行连接:

SELECT t1.col1, t2.col2
FROM   (SELECT   col1, ROWNUM AS rn
        FROM     table1
        ORDER BY col1) t1
JOIN   (SELECT   col2, ROWNUM AS rn
        FROM     table2
        ORDER BY col2) t2 ON t1.rn = t2.rn
Run Code Online (Sandbox Code Playgroud)

编辑:
稍微"笨拙",但更友好的ANSI方法是使用ROW_NUMBER()窗口功能:

SELECT t1.col1, t2.col2
FROM   (SELECT   col1, ROW_NUMBER() OVER (ORDER BY col1) AS rn
        FROM     table1) t1
JOIN   (SELECT   col2, ROW_NUMBER() OVER (ORDER BY col2) AS rn
        FROM     table2) t2 ON t1.rn = t2.rn
Run Code Online (Sandbox Code Playgroud)