首页 > 试题广场 >

获取所有非manager的员工emp_no

[编程题]获取所有非manager的员工emp_no
  • 热度指数:447130 时间限制: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
头像 N刻后告诉你
发表于 2020-05-19 20:30:48
题目:获取所有非manager的员工的emp_no 方法1:NOT IN+子查询select emp_nofrom employeeswhere emp_no not in (select emp_no from dept_manager); 方法2:LEFT JOIN左连接+IS NULLSELE 展开全文
头像 暗恋懒洋洋_
发表于 2020-03-29 14:08:12
select e.emp_nofrom employees e left join dept_manager don d.emp_no = e.emp_nowhere d.dept_no is null 本身题目不难,只是理解上稍微有点问题,看了评论区才知道所谓主管就是有dept_no的人,一开始以 展开全文
头像 ruoan
发表于 2020-04-06 06:35:09
一个用不到索引的方式,只是提供一种思路 select emp_no from employees where emp_no not in (select distinct emp_no from dept_manager);
头像 mlpan
发表于 2021-04-23 09:17:54
获取所有非manager的员工的emp_no 两种方法: 方法1:NOT IN 与 子查询 select e.emp_no from employees e where e.emp_no not in (select emp_no from dept_manager);方法2:L 展开全文
头像 李绍宇
发表于 2021-07-26 09:30:00
方法一 NOT IN+子查询 select emp_nofrom employeeswhere emp_no not in (select emp_no from dept_manager); 方法二 左连接去中 SELECT e.emp_noFROM employees eleft join 展开全文
头像 哄冻尼
发表于 2020-04-11 15:55:44
SELECT employees.emp_noFROM employeesLEFT JOIN dept_managerON employees.emp_no = dept_manager.emp_noWHERE dept_manager.emp_no IS NULL
头像 markeNick
发表于 2020-10-23 09:57:45
关键字 except select * from Aexceptselect * from B; SQL:select emp_no from employeesexceptselect emp_no from dept_manager;
头像 月薪5万+
发表于 2021-07-20 18:29:55
感觉可以建个 索引优化,大佬们有没 有试一下的
头像 在秋招的鸽子很漂亮
发表于 2022-02-20 22:41:54
SELECT emp_no FROM employees e WHERE NOT EXISTS ( SELECT emp_no FROM dept_manager WHERE emp_no = e.emp_no ) 使用相关子查询的方法
头像 牛客611348832号
发表于 2022-03-09 15:11:07
两种思路(推荐思路2): 思路1: 1、先从dept_manager表里查出emp_no 2、不在dept_manager表里的emp_no就是非manager的emp_no select   emp_no from   employees where & 展开全文

问题信息

难度:
502条回答 37154浏览

热门推荐

通过挑战的用户

查看代码