我分别有两个表,emp_data,role_data
EMP_DATA
ID EMPID EMPNAME ROLEID
1 A01 ABC 1
2 A01 ABC 3
ROLE_DATA
ROLEID ROLENAME EMPID
1 SE A01
2 SSE B01
当我加入这两个表时,我必须得到输出2个记录,如下面的
EMPID EMPNAME ROLEID ROLENAME
A01 ABC 1 SE
A01 ABC 3 <NULL OR EMPTY>
我写的查询将给出输出,而不是在rolename中为null,它给了我SE。
SELECT ED.EMPID,ED.EMPNAME,ED.ROLEID,RD.ROLENAME
FROM SYN.EMP_DATA ED,SYN.ROLE_DATA RD
WHERE ED.EMPID=RD.EMPID
请在这方面帮助我如何获得我想要的输出。
提前致谢
答案 0 :(得分:3)
您需要left join
:
select e.EMPID, e.EMPNAME, e.ROLEID, r.ROLENAME
from EMP_DATA e left join
ROLE_DATA r
on e.ROLEID = r.ROLEID;
顺便说一句,您的问题表明您的数据库存在问题。 EMP_DATA.ROLEID
应声明为引用ROLE_DATA
的外键。如果是这样,插入无效值将是错误的。
答案 1 :(得分:1)
告诉我们你的代码。你必须使用LEFT JOIN
SELECT emp.EMPID
,emp.EMPNAME
,emp.ROLEID
,ROLE.ROLENAME
FROM EMP_DATA as emp
LEFT JOIN ROLE_DATA as ROLE ON emp.ROLEID = ROLE.ROLEID;
答案 2 :(得分:1)
尝试此查询
select a.EMPID, a.EMPNAME, a.ROLEID,IFNULL(b.ROLENAME, 'SE') as ROLENAME
from EMP_DATA a
lef join ROLE_DATA b on a.ROLEID=B.ROLEID