繁体   English   中英

SELECT 列的值不在同一个表的另一列中 MySQL

[英]SELECT values of a column that are not in another column in the same table MySQL

我有一个名为“Quant1”的示例表,如下所示(ID - int PK,Name - Varchar(45),Salary - float,manager_id - int):

ID 姓名 薪水 Manager_id
1 约翰 300 3
2 麦克风 200 3
3 莎莉 550 4
4 500 7
5 600 7
6 600 3
7 菲尔 550 NULL

我想列出不管理任何人的员工,即 ID 1、2、5、6。所以我编写了以下代码:

SELECT *
FROM quant1
WHERE id NOT IN 
    (SELECT DISTINCT manager_id
    FROM quant1);

但它不会产生预期的结果。 任何人都可以在我的脚本中发现错误吗? 提前致谢!

此查询将返回 table_name 表中 column_name 列不包含在 table_name 表的 column_name 列中的所有行。

SELECT * FROM table_name WHERE column_name NOT IN (SELECT column_name FROM table_name)

您必须从子查询中排除NULL经理 ID,因为与NULL的所有比较都失败。

SELECT *
FROM quant1
WHERE id NOT IN 
    (SELECT DISTINCT manager_id
    FROM quant1
    WHERE manager_id IS NOT NULL);

演示

SELECT *
FROM quant1
WHERE id NOT IN 
    (SELECT DISTINCT manager_id
    FROM quant1 WHERE manager_id IS NOT NULL);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM