MySQL表信息

emp_id   emp_name   manager_id
 1        PR          3
 2        ST          4
 3        OP          3
 4        NP          5
 5        FGDG        12


这里manager_id再次引用emp_id。
我想在单个Query语句中基于emp_id查找经理名称和员工名称。

目前我正在写2个查询


首先获取emp_name和manager_id(获取emp_name)
从employee_manager中选择manager_id,emp_name,emp_id = 2;
根据上述查询中的manger_id查找manager_name
从employee_manager中选择emp_name AS Manager_name,emp_id = 1;


是否可以将其写为单个查询而不是2个查询?

最佳答案

是的,可以通过单行查询返回信息。您可以使用JOIN操作,并检索管理器的匹配行。例如:

SELECT e.emp_id
     , e.emp_name
     , e.manager_id
     , m.emp_id     AS manager_emp_id
     , m.emp_name   AS manager_emp_name
  FROM employee e
  LEFT
  JOIN employee m
    ON m.emd_id = e.manager_id
 WHERE e.emp_id = 4


如果manager_id列为NULL,或者没有emp_id值等于manager_id列值的行,请使用“外部联接”操作。 (在示例数据中,具有emp_id=5的行具有manager_id=12,但是我们看不到具有emp_id=12的行。“外部联接”允许返回员工行,并为该行返回NULL值对于经理,通过“内部联接”,我们将不会获得任何回复。

关于mysql - 查询以从下表中获取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28266293/

10-11 03:40
查看更多