"!=也不是<>"使用子查询选择数据时不起作用

时间:2018-03-13 22:59:47

标签: mysql sql

我有表雇员:
enter image description here

我想要选择的是没有指定负责人在同一部门工作的员工名单(员工#24有来自其他部门的负责人,有些人员根本没有负责人)

所以这是一个问题: 为什么会这样:

SELECT 
    *
FROM
    employee a
WHERE
    a.cheif_id NOT IN (SELECT 
            cheif_id
        FROM
            employee b
        WHERE
            b.dep_id = a.dep_id
                AND b.id = a.cheif_id);

但这不是:

SELECT 
    *
FROM
    employee a
WHERE
    a.cheif_id <> (SELECT 
            cheif_id
        FROM
            employee b
        WHERE
            b.dep_id = a.dep_id
                AND b.id = a.cheif_id); 

此外,如果我们想要选择在同一部门工作的指定负责人的员工&#39; =&#39;和&#39; in()&#39;作品。

对不起因为错误。

1 个答案:

答案 0 :(得分:1)

如果您的子查询中有多个数据,则无法使用<>,您可以使用NOT IN

我认为您可以使用JOIN代替subquery

SELECT e1.name chiefname,e2.*
FROM employee e1
INNER JOIN e2 
ON  e1.dep_id = e2.dep_id AND e1.id = e2.cheif_id