我有2个表 - Employee和Job_History 和 这两个表中都有3个常用列 - EMPLOYEE_ID,JOB_ID,DEPARTMENT_ID。
现在,我想使用JOIN加入两个表,但不是基于所有3个常见列 BUT仅基于2个常见列 - EMPLOYEE_ID和JOB_ID
我如何得到结果?
答案 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_ID
和JOB_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_ID
为1, 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_ID
,DEPARTMENT_ID
和JOB_ID
都匹配给定行的情况。