如何连接具有不同行数的两个表

时间:2017-08-13 07:05:33

标签: sql oracle

我已经在网上搜索了这个,但它无法解决我的问题。

我有两个表,一个有10行,另一个有9行

表1

RNUM       JOB_ID
---------- ---------- 
1          AC_ACCOUNT 
2          AC_MGR 
3          AD_ASST 
4          AD_PRES 
5          AD_VP 
6          FI_ACCOUNT 
7          FI_MGR 
8          HR_REP 
9          IT_PROG 
10         MK_MAN 

表2

RNUM       JOB_ID 
---------- ---------- 
1          AC_ACCOUNT 
2          AC_MGR 
3          AD_ASST 
4          AD_PRES 
5          AD_VP 
6          FI_ACCOUNT 
7          FI_MGR 
8          HR_REP 
9          IT_PROG 

我想加入这两个表,但我希望输出像这样

RNUM       JOB_ID            RNUM       JOB_ID 
---------- ----------        ---------- ---------- 
1          AC_ACCOUNT        null       null 
2          AC_MGR            1          AC_ACCOUNT 
3          AD_ASST           2          AC_MGR 
4          AD_PRES           3          AD_ASST 
5          AD_VP             4          AD_PRES 
6          FI_ACCOUNT        5          AD_VP 
7          FI_MGR            6          FI_ACCOUNT 
8          HR_REP            7          FI_MGR 
9          IT_PROG           8          HR_REP 
10         MK_MAN            9          IT_PROG 

我的第一个代码是

select a.*, b.* 
from samp a, samp2 b where a.rnum = b.rnum(+) 

但我的代码的结果是

RNUM       JOB_ID                RNUM       JOB_ID
---------- ----------            ---------- ---------- 
1          AC_ACCOUNT            1          AC_ACCOUNT 
2          AC_MGR                2          AC_MGR 
3          AD_ASST               3          AD_ASST 
4          AD_PRES               4          AD_PRES 
5          AD_VP                 5          AD_VP 
6          FI_ACCOUNT            6          FI_ACCOUNT 
7          FI_MGR                7          FI_MGR 
8          HR_REP                8          HR_REP 
9          IT_PROG               9          IT_PROG 
10         MK_MAN                null       null 

我想将表2的第1个条目(AC_ACCOUNT)连接到表1的第2个条目(AC_MGR),就像您在我想要的输出中看到的那样。

我使用rownum作为一种技术,只是为了在我的两个表之间建立连接。

我想我在这里误解了左外连接,请赐教我如何实现我想要的输出。

2 个答案:

答案 0 :(得分:0)

一个简单的解决方案是向table1添加一个等于RNUM - 1

的计算列

然后加入两个表:

表1。和table2.RNUM

答案 1 :(得分:0)

我相信这个查询可以完成这项任务:

npm cache verify