› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
mahone009
V2EX  ›  MySQL

MySQL 问题求助

  •  
  •   mahone009 · Mar 5, 2024 · 2260 views
    This topic created in 938 days ago, the information mentioned may be changed or developed.

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

    现有表

    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, 依此类推

    mahone009
        1
    mahone009  
    OP
       Mar 5, 2024
    目前只能写出某个部门的领导者信息, 比如查询 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
        2
    mumbler  
       Mar 5, 2024
    SELECT DISTINCT ON (dept_id) dept_id, manager_id FROM emp ORDER BY dept_id, manager_id;
    Vegetable
        3
    Vegetable  
       Mar 5, 2024
    子查询为什么查询特定的部门的 manager_id ,而不是所有 manager_id?
    select * from emp where emp_id in (select distinct manager_id from emp where manager_id is not null);

    这不就是所有的领导了吗?还是你没说清楚?
    KeybordDancer
        4
    KeybordDancer  
       Mar 5, 2024
    这数据不对吧,3 号员工和 4 号员工,都在部门 20 ,但领导却不一样,3 号的领导是 1 ,4 号的领导是 3
    mahone009
        5
    mahone009  
    OP
       Mar 5, 2024 via Android
    理想查询数据为
    dept_id emp_name
    10 张华
    20 张航天
    30 王小明
    mahone009
        6
    mahone009  
    OP
       Mar 5, 2024
    @Vegetable 大佬, 我想查出来的数据是
    dept_id emp_name
    10 张华
    20 张航天
    30 王小明
    mahone009
        7
    mahone009  
    OP
       Mar 5, 2024
    已解决!!!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   861 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 20:27 · PVG 04:27 · LAX 13:27 · JFK 16:27
    ♥ Do have faith in what you're doing.