mysql - "!= nor <>"使用子查询选择数据时不起作用

标签 mysql sql

我有餐 table 员工:
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); 

此外,如果我们要选择有指定主管在同一部门工作的员工,则“=”和“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/

相关文章:

php - 表的条件sql查询

mysql - 每个人获得最大的结果

java - 如何减少数据库表行整数值

sql - innodb : choose which query should be rolled back in a deadlock 的 Mysql low_priority

sql - 从同时具有距离和时间的列计算平均速度(NULL 问题)

MySql - 获取值为 1 的列名称

MySQL:使用串联创建 View - 语法错误

php - 使用 sqlite/php 获取两个不同行/列中两个数字的差异

sql - Facebook FQL LIKE 运算符

mysql - 基本 SELECT 查询 - 来自多个数据库的结果