SQL251 使用含有关键字exists查找未分配具体部门的员工的所有信息。
描述
使用含有关键字exists查找未分配具体部门的员工的所有信息。
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`));
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`));
输出格式:
emp_no birth_date first_name last_name gender hire_date
10011 1953-11-07 Mary Sluis F 1990-01-22
答案
select * from employees
where not exists(
select 1
from dept_emp
where employees.emp_no = dept_emp.emp_no
);
补充
MySQL 中的 EXISTS 语法用于在子查询中测试是否存在至少一行数据。如果子查询返回至少一行数据,则 EXISTS 条件为真(TRUE),并且外部查询会执行相应的操作(如返回数据)。如果子查询没有返回任何行,则 EXISTS 条件为假(FALSE),并且外部查询可能会忽略(基于上下文)或返回不同的结果。EXISTS 子查询通常与 SELECT 1 或其他不返回实际数据的查询一起使用,因为 EXISTS 只关心是否存在行,而不关心行的具体内容。