Skip to content

牛客网 SQL实战 4 查找所有已经分配部门的员工#

目录#

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
省略 省略 省略
Piveteau Duangkaew d006

1.5. Source#

牛客网 SQL实战 4 查找所有已经分配部门的员工

2. 题解#

可以使用JOIN查询,也可以在FROM后面接两个表名实现 INNER JOIN

3. 代码#

使用JOIN

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

使用逗号连接加WHERE语句。

SELECT `last_name`, `first_name`, `dept_no`
FROM `dept_emp` as t1, `employees` as t2
WHERE t1.emp_no = t2.emp_no;

使用逗号连接加ON语句,Mysql中不能使用下面这个语句,SQLite中可以。

SELECT `last_name`, `first_name`, `dept_no`
FROM `dept_emp` as t1, `employees` 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