大佬们好, 求助一个问题, 跪求解决方案
现有表
CREATE TABLE `emp` (
`emp_id` int NOT NULL AUTO_INCREMENT COMMENT '员工 id',
`emp_name` varchar(255) DEFAULT NULL COMMENT '员工名称',
`gender` char(1) DEFAULT NULL COMMENT '性别',
`manager_id` int DEFAULT NULL COMMENT '领导 id',
`dept_id` int DEFAULT NULL COMMENT '部门 id',
PRIMARY KEY (`emp_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb3;
INSERT INTO `atguigudb`.`emp` (`emp_id`, `emp_name`, `gender`, `manager_id`, `dept_id`) VALUES (1, '张华', '1', 0, 10);
INSERT INTO `atguigudb`.`emp` (`emp_id`, `emp_name`, `gender`, `manager_id`, `dept_id`) VALUES (2, '黄凯', '1', 1, 10);
INSERT INTO `atguigudb`.`emp` (`emp_id`, `emp_name`, `gender`, `manager_id`, `dept_id`) VALUES (3, '张航天', '0', 1, 20);
INSERT INTO `atguigudb`.`emp` (`emp_id`, `emp_name`, `gender`, `manager_id`, `dept_id`) VALUES (4, '李顺然', '1', 3, 20);
INSERT INTO `atguigudb`.`emp` (`emp_id`, `emp_name`, `gender`, `manager_id`, `dept_id`) VALUES (5, '彭磊', '0', 3, 20);
INSERT INTO `atguigudb`.`emp` (`emp_id`, `emp_name`, `gender`, `manager_id`, `dept_id`) VALUES (6, '李凯', '0', 3, 20);
INSERT INTO `atguigudb`.`emp` (`emp_id`, `emp_name`, `gender`, `manager_id`, `dept_id`) VALUES (7, '王小明', '1', 5, 30);
INSERT INTO `atguigudb`.`emp` (`emp_id`, `emp_name`, `gender`, `manager_id`, `dept_id`) VALUES (8, '杨浩', '1', 7, 30);
INSERT INTO `atguigudb`.`emp` (`emp_id`, `emp_name`, `gender`, `manager_id`, `dept_id`) VALUES (9, '林和', '1', 7, 30);
我想查询每个部门的领导信息
1
mahone009 OP 目前只能写出某个部门的领导者信息, 比如查询 20 号部门领导人
SELECT * FROM emp WHERE emp_id IN ( SELECT t1.emp_id FROM emp t1 INNER JOIN emp t2 ON t1.emp_id = t2.manager_id WHERE t2.dept_id = 20 ) AND dept_id = 20 |
2
mumbler 268 天前
SELECT DISTINCT ON (dept_id) dept_id, manager_id FROM emp ORDER BY dept_id, manager_id;
|
3
Vegetable 268 天前
子查询为什么查询特定的部门的 manager_id ,而不是所有 manager_id?
select * from emp where emp_id in (select distinct manager_id from emp where manager_id is not null); 这不就是所有的领导了吗?还是你没说清楚? |
4
KeybordDancer 268 天前
这数据不对吧,3 号员工和 4 号员工,都在部门 20 ,但领导却不一样,3 号的领导是 1 ,4 号的领导是 3
|
5
mahone009 OP 理想查询数据为
dept_id emp_name 10 张华 20 张航天 30 王小明 |
7
mahone009 OP 已解决!!!
|