Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用另一个表中的某些值检查表_Sql_Sql Server - Fatal编程技术网

Sql 使用另一个表中的某些值检查表

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

我有两张表,如下所示

皇帝 如何从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.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多行,我不想看到所有的记录。你是对的,我错了。我已经用其他可能的解决方案更新了我的答案。