首页 > 试题广场 >

获取所有员工当前的manager

[编程题]获取所有员工当前的manager
  • 热度指数:517970 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个员工表dept_emp简况如下:
emp_no
dept_no 
from_date 
to_date
10001 d001
1986-06-26 9999-01-01
10002 d001
1996-08-03 9999-01-01
10003 d002
1995-12-03 9999-01-01
第一行表示为员工编号为10001的部门是d001部门。

有一个部门经理表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
第一行表示为d001部门的经理是编号为10002的员工。

获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示,以上例子如下:
emp_no manager
10001 10002

示例1

输入

drop table if exists  `dept_emp` ; 
drop table if exists  `dept_manager` ; 
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
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`));
INSERT INTO dept_emp VALUES(10001,'d001','1986-06-26','9999-01-01');
INSERT INTO dept_emp VALUES(10002,'d001','1996-08-03','9999-01-01');
INSERT INTO dept_emp VALUES(10003,'d002','1995-12-03','9999-01-01');
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');

输出

10001|10002
select a.emp_no,b.emp_no as manager
from dept_emp a,dept_manager b
where a.dept_no=b.dept_no
and a.emp_no!=b.emp_no
发表于 2025-05-19 22:30:35 回复(0)
select
    de.emp_no,
    dm.emp_no as manager
from
    dept_emp de left join dept_manager dm
    on de.dept_no = dm.dept_no
where 
    de.emp_no != dm.emp_no;

发表于 2025-04-28 19:45:20 回复(0)
select
de.emp_no
,a.manager
from(
select
dept_no
,emp_no as manager
from dept_manager
)a
right join dept_emp de
on a.dept_no=de.dept_no
where a.manager <> de.emp_no
发表于 2025-02-27 15:54:37 回复(0)
select e.emp_no	
,m.emp_no manager
from dept_emp e join dept_manager m
on e.dept_no=m.dept_no
where e.emp_no!=m.emp_no

发表于 2025-01-11 14:20:15 回复(0)
select
d.emp_no emp_no,m.emp_no manager
from dept_emp d left join dept_manager m on d.dept_no = m.dept_no
where m.emp_no != d.emp_no



发表于 2024-12-23 04:40:03 回复(0)
select
    a.emp_no,
    b.emp_no as manager
from
    dept_emp a,dept_manager b
where
    a.dept_no = b.dept_no
and
    a.emp_no <> b.emp_no
发表于 2024-09-10 14:59:05 回复(0)
1.连表查询部门经理的员工号并改为manager
2.选出员工工号不等于manager的记录
select de.emp_no, dm.manager from dept_emp de
left join (
    select dept_no, emp_no as manager from dept_manager 
) dm on dm.dept_no = de.dept_no
where de.emp_no != dm.manager


发表于 2024-08-03 09:15:36 回复(0)
select d1.emp_no, d2.emp_no as manager from dept_emp d1 join dept_manager d2 on d1.dept_no=d2.dept_no where d1.emp_no!=d2.emp_no;
发表于 2024-07-04 12:22:14 回复(0)
select
    *
from
    (
        select
            dept_emp.emp_no,
            dept_manager.emp_no as manager
        from
            dept_emp
            join dept_manaager using (dept_no)
    )t1
where emp_no <>manager


发表于 2024-06-26 16:53:32 回复(0)
select 
    e.emp_no,m.emp_no as manager
from dept_emp as e
left join dept_manager as m
on e.dept_no=m.dept_no 
where e.emp_no<>m.emp_no
不知道这样写是否规范,求指导
发表于 2024-06-21 14:46:17 回复(0)
SELECT
dept_emp.emp_no,
dept_manager.emp_no AS manager
FROM
dept_emp
LEFT JOIN dept_manager ON dept_emp.dept_no = dept_manager.dept_no
WHERE
dept_emp.emp_no != dept_manager.emp_no

发表于 2024-06-03 18:21:07 回复(0)
SELECT e.emp_no,
m.emp_no AS manager
FROM dept_emp e
LEFT JOIN dept_manager m
ON e.dept_no=m.dept_no
WHERE e.emp_no
NOT IN (
    SELECT m.emp_no
    FROM dept_manager
);
发表于 2024-05-16 09:56:44 回复(0)
select a.* from
(select de.emp_no, dm.emp_no as manager from dept_emp de
left join dept_manager dm
on de.dept_no = dm.dept_no) as a
where a.emp_no != a.manager
发表于 2024-05-08 22:16:27 回复(0)
select d.emp_no, m.emp_no manager from dept_emp d, dept_manager m
where d.dept_no = m.dept_no and d.emp_no != m.emp_no
发表于 2024-05-07 20:05:25 回复(0)
select t1.emp_no,t2.emp_no
from dept_emp t1 left join dept_manager t2
    on t1.dept_no = t2.dept_no
where t1.emp_no <> t2.emp_no

发表于 2024-04-29 09:09:09 回复(0)
select de.emp_no,dm.emp_no as manager
from dept_emp de
left join dept_manager dm
on de.dept_no=dm.dept_no
where de.emp_no not in (select emp_no from dept_manager)

发表于 2024-04-12 18:09:58 回复(0)
select u.emp_no,(
    select emp_no
    from dept_manager
    where dept_no=u.dept_no
)
from dept_emp u
where emp_no not in (
    select emp_no
    from dept_manager
)

编辑于 2024-03-27 19:42:31 回复(0)