仅基于两个公共列连接2个表(具有3个公共列)

时间:2017-07-08 06:51:25

标签: sql oracle

我有2个表 - Employee和Job_History 和 这两个表中都有3个常用列 - EMPLOYEE_ID,JOB_ID,DEPARTMENT_ID。

现在,我想使用JOIN加入两个表,但不是基于所有3个常见列 BUT仅基于2个常见列 - EMPLOYEE_ID和JOB_ID

我如何得到结果?

2 个答案:

答案 0 :(得分:1)

您可以在此multiple JOIN条款中传递on条件

select E.* ,J.* 
from Employee as E 
   inner join Job_History as J 
   on (E.EMPLOYEE_ID=J.EMPLOYEE_ID 
        and E.JOB_ID=J.JOB_ID) 

答案 1 :(得分:1)

您可以根据自己的喜好JOIN选择尽可能多的列。 JOIN条件告诉数据库如何合并表中的数据。

SELECT EMPLOYEE_ID 
FROM EMPLOYEES
JOIN JOB_HISTORY USING (EMPLOYEE_ID, JOB_ID)

如果DEPARTMENT_ID中的值在EMPLOYEE_IDJOB_ID等效的两个表中也匹配,那么无论您是否还包含{{{},DEPARTMENT_ID中的值都相同1}}。

如果我在每个表中都有以下列:

Table A
EMPLOYEE_ID  DEPARTMENT_ID  JOB_ID  Other_Column1  Other_Column2
1            1              1       stuff          things
2            2              2       stuff          things
3            3              3       stuff          things

Table B
EMPLOYEE_ID  DEPARTMENT_ID  JOB_ID  Other_Column3  Other_Column4
1            1              1       stuff          things
2            2              2       stuff          things
3            3              3       stuff          things

然后,无论您是否包含DEPARTMENT_ID,联接都是等效的。但是,如果表格A中的DEPARTMENT_ID1, 2, 3而表B中为2, 3, 4

Table A
EMPLOYEE_ID  DEPARTMENT_ID  JOB_ID  Other_Column1  Other_Column2
1            1              1       stuff          things
2            2              2       stuff          things
3            3              3       stuff          things

Table B
EMPLOYEE_ID  DEPARTMENT_ID  JOB_ID  Other_Column3  Other_Column4
1            2              1       stuff          things
2            3              2       stuff          things
3            4              3       stuff          things

结果集不会返回任何结果,因为不存在三列EMPLOYEE_IDDEPARTMENT_IDJOB_ID都匹配给定行的情况。

相关问题