Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何连接具有不同行数的两个表_Sql_Oracle - Fatal编程技术网

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

Sql 如何连接具有不同行数的两个表,sql,oracle,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

我已经在网上搜索过了,但它不能解决我的问题

我有两张桌子,一张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_帐户)连接到表1的2号条目(AC_MGR),正如您在我所需的输出中看到的那样

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


我想我误解了这里的左外连接,请告诉我如何实现我想要的输出

我相信这个查询会起到作用:

Select a.*, b.* 
From samp a 
Left Outer Join samp2 b On b.rnum + 1 = a.rnum
Order by a.rnum;

两个表都有AC_帐户为什么不连接具有相同AC_帐户的表?您没有ORDER BY,因此将没有ORDER。此外,您的加入是在a.rnum=b.rnum上进行的,但这不是您想要的结果。你到底想要什么,真让人困惑!你可以在a.rnum是b.rnum+1的地方做,但我怀疑这不完全是你做的want@user7294900您好,谢谢您的回复,但是您将他们与AC_帐户连接是什么意思?除了表1中的最后一个表外,这两个表实际上具有相同的数据。请解释当两个表存在更多差异时的逻辑。如果表2有一个表1没有的键怎么办?什么是表1有三个表2没有的键?如果他们没有共同点呢?你有一般的逻辑吗?@LoztInSpace Hi,谢谢你的回复。这实际上是我第二次尝试,结果也不太好。从a.rnum=b.rnum+1上的samp a左外部联接samp2 b中选择a.*,b.*,该联接产生相同的输出,只是表1现在从2开始(WC_MGR),其第10个数据是1号(AC_帐户)。我写了你想要的代码了吗?嗨,谢谢你的回复。如果是(+)格式,它会是什么样子?我尝试了这个错误,但从samp a,samp2 b中选择a.*,b.*,其中(+)b.rnum+1=a.rnum order by a.rnumI不鼓励使用特定于Oracle的外部联接语法,因为它不可移植,但它看起来像
select a.*,b.*从samp a,samp2 b中选择b.rnum(+)+1=a.rnum order by a.rnum