查询各部门所有员工:基于dept与emp表的SQL需求
查询所有部门的全部员工(含无员工的部门)
嘿,这就帮你搞定这个需求!要返回所有部门(包括没有员工的部门)及其下属员工,我们需要用左外连接来关联部门表和员工表,确保部门表的所有记录都被保留。
首先先明确两张表的结构:
部门表(dept)结构
| 字段名 | 是否为空 | 字段类型 |
|---|---|---|
| DEPTNO | NOT NULL | NUMBER(2) |
| DNAME | VARCHAR2(14) | |
| LOC | VARCHAR2(13) |
员工表(emp)结构
| 字段名 | 是否为空 | 字段类型 |
|---|---|---|
| EMPNO | NOT NULL | NUMBER(4) |
| ENAME | VARCHAR2(10) | |
| JOB | VARCHAR2(9) | |
| MGR | NUMBER(4) | |
| HIREDATE | DATE | |
| SAL | NUMBER(7,2) | |
| COMM | NUMBER(7,2) | |
| DEPTNO | NUMBER(2) |
实现查询的SQL语句
SELECT d.DEPTNO, d.DNAME, d.LOC, e.EMPNO, e.ENAME, e.JOB, e.MGR, e.HIREDATE, e.SAL, e.COMM FROM dept d LEFT JOIN emp e ON d.DEPTNO = e.DEPTNO ORDER BY d.DEPTNO, e.EMPNO;
语句说明
- 使用
LEFT JOIN(左外连接):这是核心,它会保留dept表的所有记录,即使某个部门没有对应的员工,员工相关字段会显示NULL - 表别名
d和e:让SQL代码更简洁易读,避免重复写表名 ORDER BY子句:按部门编号和员工编号排序,让结果按部门分组,同一部门内员工有序排列
内容的提问来源于stack exchange,提问作者chomprrr
相关产品推荐
相关产品推荐

