Sql 使用另一个表中的某些值检查表
我有两张表,如下所示 皇帝 如何从empMaster中获取EmpPers表中没有perTypeID=3记录的所有EMPID的列表Sql 使用另一个表中的某些值检查表,sql,sql-server,Sql,Sql Server,我有两张表,如下所示 皇帝 如何从empMaster中获取EmpPers表中没有perTypeID=3记录的所有EMPID的列表 提前感谢如果我理解正确,您可以: SELECT e.empid FROM EmpMaster e WHERE (SELECT COUNT(*) FROM EmpPers p WHERE e.empid = p.empID AND p.empPersSeq = 3) = 0 如果我理解正确,您可以: SELECT e.emp
提前感谢如果我理解正确,您可以:
SELECT e.empid FROM EmpMaster e
WHERE (SELECT COUNT(*)
FROM EmpPers p
WHERE e.empid = p.empID AND p.empPersSeq = 3) = 0
如果我理解正确,您可以:
SELECT e.empid FROM EmpMaster e
WHERE (SELECT COUNT(*)
FROM EmpPers p
WHERE e.empid = p.empID AND p.empPersSeq = 3) = 0
我相信一个不存在的人可以做到这一点:
SELECT
em.empid
FROM EmpMaster em
WHERE NOT EXISTS (
SELECT NULL
FROM EmpPers
WHERE empID = em.empid AND perTypeID = 3
);
我相信一个不存在的人可以做到这一点:
SELECT
em.empid
FROM EmpMaster em
WHERE NOT EXISTS (
SELECT NULL
FROM EmpPers
WHERE empID = em.empid AND perTypeID = 3
);
您可以联接这两个表,在empid上聚合,并使用HAVING子句仅选择perTypeID为never=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
您可以联接这两个表,在empid上聚合,并使用HAVING子句仅选择perTypeID为never=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
谢谢,但我不想在列表中看到perTypeID为1,2的。我想看看所有没有3类记录的员工。empPers中有100000多行,我不想看到所有的记录。你是对的,我错了。我已经用其他可能的解决方案更新了我的答案。谢谢,但我不想在列表中看到perTypeID为1,2的答案。我想看看所有没有3类记录的员工。empPers中有100000多行,我不想看到所有的记录。你是对的,我错了。我已经用其他可能的解决方案更新了我的答案。