Skip to content

牛客网 SQL实战 5 查找所有员工的last_name和first_name#

目录#

1. 题目描述#

1.1. Time Limit#

C/C++ 1秒,其他语言2秒

1.2. Memory Limit#

C/C++ 32M,其他语言64M

1.3. Problem Description#

查找所有员工的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`));

1.4. Output#

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

1.5. Source#

牛客网 SQL实战 5 查找所有员工的last_name和first_name

2. 题解#

要求在查询中包括暂时没有分配具体部门的员工,需要使用 LEFT JOIN

3. 代码#

使用LEFT JOIN

SELECT `last_name`,
    `first_name`,
    `dept_no`
FROM employees AS t1
    LEFT JOIN dept_emp AS t2
ON t1.emp_no = t2.emp_no;

联系邮箱:curren_wong@163.com

CSDNhttps://me.csdn.net/qq_41729780

知乎https://zhuanlan.zhihu.com/c_1225417532351741952

公众号复杂网络与机器学习

欢迎关注/转载,有问题欢迎通过邮箱交流。

二维码

Back to top