题目描述
查找所有已经分配部门的员工的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`));
解答:
select
e.last_name,
e.first_name,
de.dept_no
from
employees e,
dept_emp de
where
e.emp_no=de.emp_no
select
e.last_name,
e.first_name,
de.dept_no
from
employees e join dept_emp de on e.emp_no=de.emp_no
左连接也可以,因为部门-员工表中的员工是员工表的子集
select
e.last_name,
e.first_name,
de.dept_no
from
dept_emp de left join employees e on de.emp_no = e.emp_no