如何实现同部门员工配对列表查询?SQL技术求助
需求:生成同部门员工配对列表
我需要生成同部门员工的配对列表,示例格式如下:
| 员工姓名 | 部门 | 员工姓名 |
|---|---|---|
| Tim | 2 | kim |
| Tim | 2 | Jim |
| Kim | 2 | Tim |
| Kim | 2 | Jim |
| Jim | 2 | Kim |
| Jim | 2 | Tim |
| Aim | 3 | Sim |
| Sim | 3 | Aim |
目前我执行的SQL语句是:
SELECT emp_name, dept_code FROM employee WHERE dept_code IN (SELECT dept_code FROM employee);
得到的结果如下:
| 员工姓名 | 部门 |
|---|---|
| Tim | 2 |
| Kim | 2 |
| Jim | 2 |
| Aim | 3 |
| Sim | 3 |
请问如何编写SQL语句生成同部门员工的配对列表?
解决方案
使用自连接(Self Join)即可实现需求,将employee表与自身关联,筛选同部门且不同的员工配对,SQL语句如下:
SELECT e1.emp_name AS 员工姓名, e1.dept_code AS 部门, e2.emp_name AS 员工姓名 FROM employee e1 JOIN employee e2 ON e1.dept_code = e2.dept_code WHERE e1.emp_name != e2.emp_name;
逻辑说明:
- 给
employee表设置两个别名e1和e2,模拟两个独立的员工数据集 - 通过
JOIN条件e1.dept_code = e2.dept_code确保配对员工属于同一部门 - 通过
WHERE e1.emp_name != e2.emp_name排除员工与自身配对的无效数据,最终得到所有同部门的双向员工配对结果
内容的提问来源于stack exchange,提问作者maricenaz
相关产品推荐
相关产品推荐

