首页 > 试题广场 >

获取所有非manager的员工emp_no

[编程题]获取所有非manager的员工emp_no
  • 热度指数:463204 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个员工表employees简况如下:
emp_no 
birth_date 
first_name 
last_name 
gender hire_date 
10001
1953-09-02
Georgi     
Facello   
 M 1986-06-26
10002
1964-06-02
Bezalel    
Simmel    
 F 1985-11-21
10003  
1959-12-03
Parto      
Bamford   
 M 1986-08-28

有一个部门领导表dept_manager简况如下:
dept_no 
emp_no
from_date 
to_date
d001
10002
1996-08-03 9999-01-01
d002
10003
1990-08-05 9999-01-01

请你找出所有非部门领导的员工emp_no,以上例子输出:
emp_no
10001

示例1

输入

drop table if exists  `dept_manager` ; 
drop table if exists  `employees` ; 
CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
INSERT INTO dept_manager VALUES('d001',10002,'1996-08-03','9999-01-01');
INSERT INTO dept_manager VALUES('d002',10003,'1990-08-05','9999-01-01');
INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');

输出

10001
select emp_no
from employees
where emp_no not in (
    select emp_no
    from dept_manager)

发表于 2024-09-02 16:55:44 回复(0)
select t1.emp_no
from employees t1 
    left join dept_manager t2 on t1.emp_no=t2.emp_no
where dept_no is null

发表于 2024-07-18 15:35:46 回复(0)
select e.emp_no from employees e,dept_manager d where e.emp_no != d.emp_no;
我这么写错在哪里?
就是查找当员工表的id和领导表的id不一致的时候,就说明员工不是领导
发表于 2024-05-23 10:37:16 回复(0)
select emp_no
from employees
where emp_no not in (
    select emp_no from dept_manager
    )

发表于 2024-04-28 10:14:18 回复(0)
select emp_no from employees
where emp_no not in (select emp_no from dept_manager);

编辑于 2024-02-05 12:19:26 回复(0)
select a.emp_no from employees a 
where not exists (select * from dept_manager b WHERE a.emp_no = b.emp_no);
发表于 2023-11-15 12:26:08 回复(0)
# 请你找出所有非部门领导的员工emp_no,以上例子输出:


select t1.emp_no
from employees t1 left join dept_manager t2
on t1.emp_no = t2.emp_no
where t2.emp_no is null;

发表于 2023-08-14 15:57:42 回复(0)
employees和dept_manager做不等连接统计每个emp_no个数,此时emp_no个数等于
dept_manager列数的就是从没在dept_manager表中出现过的数据,也就是非manager的员工
with t1 as (
    select
        employees.emp_no,
        count(1) as toolM
    from
        employees join dept_manager
    on
        employees.emp_no != dept_manager.emp_no group by employees.emp_no
)select emp_no from t1 where toolM = (select count(1) as toolM from dept_manager);

发表于 2023-08-11 16:04:27 回复(0)
select 
    e.emp_no
from 
    employees e left join dept_manager d 
    on e.emp_no=d.emp_no 
where 
    d.emp_no is null 

发表于 2022-12-06 23:24:52 回复(0)
# 方法一
select 
    emp_no
from employees
where emp_no not in 
    (select emp_no from dept_manager)
# 方法二
select 
    emp_no
from employees 
where not exists (         
    select emp_no from dept_manager 
    where dept_manager.emp_no = employees.emp_no 
                 )
# 方法三
select employees.emp_no
from employees 
left join dept_manager 
    on employees.emp_no = dept_manager.emp_no
where dept_no is null
发表于 2022-11-03 22:53:00 回复(0)
select e.emp_no
from employees e
where not exists (select d.emp_no from dept_manager d where e.emp_no = d.emp_no)
发表于 2022-09-15 09:20:32 回复(0)
select
  e.emp_no
from
  employees e
  left join dept_manager d on e.emp_no = d.emp_no
where
  d.dept_no is null
发表于 2022-08-04 13:38:27 回复(0)
select emp_no 
from employees
where emp_no not in 
    (select emp_no from dept_manager);
# 这种一个表的编号不在另一个表的,直接固定思路,子查询完事,而且用where
发表于 2022-08-02 22:56:42 回复(0)
巧用left join
发表于 2022-07-30 13:39:52 回复(0)
select 
emp_no
from employees e
where e.emp_no not in (select emp_no from dept_manager)

发表于 2022-07-26 18:01:39 回复(0)
select emp_no
from employees
where emp_no not in (select emp_no from dept_manager);
发表于 2022-07-24 22:15:30 回复(0)
select e.emp_no
from employees e, dept_manager d
where e.emp_no != d.emp_no
纯小白,请问为什么不等于在这里不能使用呢?等于的结果是1002 1003那么不等于的结果不就应该是1001吗?

发表于 2022-07-16 19:58:10 回复(0)
select em.emp_no
from employees em left join dept_manager dm on em.emp_no = dm.emp_no
where dm.dept_no is null;
发表于 2022-06-01 11:24:03 回复(0)
SELECT  emp_no FROM employees as a
where not exists 
(select 1 from dept_manager as b
 where a.emp_no =b.emp_no )
发表于 2022-05-28 22:15:29 回复(0)