0

我有两个表,如下所示

雇主大师

empid firstName  lastName  lstatus
1       Mark      Rowen      1
2       John      Griffin    1
3       Derick    Rose       1


EmpPers
----------
empPersSeq  empID   perTypeID   PersTypeValue
1             1        1            Good
2             1        2            Fair 
3             1        3            Good 
4             2        1            Fair
5             2        2            Fair
6             2        2            Fair

如何从 EmpPers 表中没有 perTypeID=3 记录的 empMaster 获取所有 EmpIds 的列表?

提前致谢

4

4 回答 4

2
select *
from EmpMaster e
where not exists (
    select *
    from EmpPers p
    where p.empID = e.empID and p.perTypeID = 3
)
于 2012-05-06T01:53:47.817 回答
2

我相信 NOT EXISTS 可以解决问题:

SELECT 
em.empid
FROM EmpMaster em
WHERE NOT EXISTS (
    SELECT NULL 
    FROM EmpPers 
    WHERE empID = em.empid AND perTypeID = 3
);
于 2012-05-06T01:57:29.037 回答
0

如果我对你的理解正确,你可以这样做:

SELECT e.empid FROM EmpMaster e
WHERE    (SELECT COUNT(*) 
         FROM EmpPers p
         WHERE e.empid = p.empID AND p.empPersSeq = 3) = 0
于 2012-05-06T01:28:00.500 回答
0

您可以加入 2 个表,在 empid 上进行聚合,并使用 HAVING 子句仅选择 perTypeID 永远不会 = 3 的 empid。

select a.empid
from EmpMaster a
    left join EmpPers b
    on a.empid = b.empid
group by a.empid
HAVING max(case when b.perTypeID = 3 then 1 else 0 end) =0 
于 2012-05-06T01:59:57.637 回答