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/