MySQL 问题求助

268 天前
 mahone009

大佬们好, 求助一个问题, 跪求解决方案

现有表

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);

我想查询每个部门的领导信息

数据说明, 部门 id 为 10 的领导的 id 为 1, 部门 20 的领导的 id 为 1, 部门 30 的领导的 id 为 5, 依此类推

1017 次点击
所在节点    MySQL
7 条回复
mahone009
268 天前
目前只能写出某个部门的领导者信息, 比如查询 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
mumbler
268 天前
SELECT DISTINCT ON (dept_id) dept_id, manager_id FROM emp ORDER BY dept_id, manager_id;
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);

这不就是所有的领导了吗?还是你没说清楚?
KeybordDancer
268 天前
这数据不对吧,3 号员工和 4 号员工,都在部门 20 ,但领导却不一样,3 号的领导是 1 ,4 号的领导是 3
mahone009
268 天前
理想查询数据为
dept_id emp_name
10 张华
20 张航天
30 王小明
mahone009
268 天前
@Vegetable 大佬, 我想查出来的数据是
dept_id emp_name
10 张华
20 张航天
30 王小明
mahone009
268 天前
已解决!!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1020612

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX