简单的SQL Server查询 - 如果存在于一个表中,则需要返回Y else N.

时间:2016-12-09 21:00:06

标签: sql sql-server

我有2张桌子。一个表employeemaster包含公司的所有员工。主键= EmpNo

另一个表employeeNoTime包含一个没有任何好处的较小员工列表。主键= EmpNo

我想查询它将返回2列,EmployeeNo和Y或N。

如果员工编号在Y表中,则

EmployeeNoTime。有什么建议吗?

2 个答案:

答案 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