[英]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.