查询从下表中获取数据

时间:2015-02-01 18:36:01

标签: mysql

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个查询

  1. 首先获取emp_name和manager_id(获取emp_name) SELECT manager_id,emp_name FROM employee_manager WHERE emp_id = 2;
  2. 基于上述查询中的manger_id查找manager_name SELECT emp_name AS Manager_name FROM employee_manager WHERE emp_id = 1;
  3. 是否可以将其写为单个查询而不是2个查询?

1 个答案:

答案 0 :(得分: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值。使用"内部联接",我们将不会返回任何行。