秋招SQL实战 :5.查找所有员工的last_name和first_name以及对应部门编号dept_no

(秋招SQL实战 :5.查找所有员工的last_name和first_name以及对应部门编号dept_no

题目描述:

查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括暂时没有分配具体部门的员工

CREATE TABLE dept_emp (
emp_no int(11) NOT NULL,
dept_no char(4) NOT NULL,
from_date date NOT NULL,
to_date date NOT NULL,
PRIMARY KEY (emp_no,dept_no));
CREATE TABLE employees (
emp_no int(11) NOT NULL,
birth_date date NOT NULL,
first_name varchar(14) NOT NULL,
last_name varchar(16) NOT NULL,
gender char(1) NOT NULL,
hire_date date NOT NULL,
PRIMARY KEY (emp_no));
输入描述:

输出描述:

last_name first_name dept_no
Facello Georgi d001
省略 省略 省略
Sluis Mary NULL(在sqlite中此处为空,MySQL为NULL)

题目解析:

解法:

select e.last_name,e.first_name,d.dept_no
from employees as e
left join dept_emp as d
on e.emp_no = d.emp_no;

使用外部联结的左联结。
内联结,两边表同时有对应的数据,即任何一边缺失数据就不显示。
左联结,读取左边数据表的全部数据,即便右边表无对应数。即右表d中dept_no即使为NULL,也会读取左表e中的全部emp。

你可能感兴趣的:(秋招SQL实战 :5.查找所有员工的last_name和first_name以及对应部门编号dept_no)