我有2张桌子。一个表employeemaster
包含公司的所有员工。主键= EmpNo
。
另一个表employeeNoTime
包含一个没有任何好处的较小员工列表。主键= EmpNo
。
我想查询它将返回2列,EmployeeNo
和Y或N。
Y
表中,则 EmployeeNoTime
。有什么建议吗?
答案 0 :(得分:1)
虽然left join
似乎就像正确的答案一样,但它冒的风险是第二个表中的重复项可能会导致重复的结果。
出于这个原因,我认为带有子查询的case
更好:
select m.*,
(case when exists (select 1 from employeenotime n where m.EmployeeNo = n.EmployeeNo)
then 1 else 0
end) as notimeflag
from employeemaster m;
答案 1 :(得分:0)
左连接应该可以解决问题:
SELECT m.EmployeeNo, CASE WHEN n.EmployeeNo IS NOT NULL THEN 'Y' ELSE 'N' END
FROM employeemaster m
LEFT JOIN employeeNoTime n ON m.EmployeeNo = n.EmployeeNo