我想要选择的是在同一部门工作的没有指定主管的员工列表(员工#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);
此外,如果我们要选择有指定主管在同一部门工作的员工,则“=”和“in ()”有效。
抱歉,我犯了一个错误。
最佳答案
如果子查询中有多个数据,则不能使用 <>
,您可以使用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
关于mysql - "!= nor <>"使用子查询选择数据时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49267216/