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个查询
是否可以将其写为单个查询而不是2个查询?
答案 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值。使用"内部联接",我们将不会返回任何行。