查询 拥有员工的 部门ID、部门名称 (没有员工的部门无需展示)
时间: 2024-03-18 07:39:43 浏览: 21
可以使用以下 SQL 语句查询拥有员工的部门ID和名称:
```
SELECT department_id, department_name
FROM departments
WHERE department_id IN (SELECT DISTINCT department_id FROM employees);
```
这个查询语句中,嵌套了一个子查询,用于查找拥有员工的部门ID。主查询则是根据部门ID在部门表中查询相应的部门名称。由于使用了子查询,因此只有拥有员工的部门才会被返回,没有员工的部门不会被展示。
相关问题
-- 13. 查询 拥有员工的 部门ID、部门名称 (没有员工的部门无需展示)
以下是实现该查询的SQL语句:
```
SELECT d.id, d.name
FROM tb_dept d
WHERE EXISTS (
SELECT 1
FROM tb_emp e
WHERE e.dept_id = d.id
);
```
该查询语句使用`EXISTS`子查询来判断是否存在属于该部门的员工,如果存在则返回该部门的ID和名称。如果不存在,则不返回该部门。
具体来说,它的执行步骤如下:
1. 从`tb_dept`表中选取所有部门的ID和名称。
2. 使用`EXISTS`子查询来判断该部门是否拥有员工。子查询中选取任意一行数据,只要该行数据的`dept_id`与外部查询的`d.id`相同,则返回`1`,否则返回`NULL`。
3. 如果子查询返回的结果为`1`,则表示该部门拥有员工,将该部门的ID和名称返回。
该查询语句可以帮助你快速查询拥有员工的部门信息。
sql查询工资最高的员工所在的部门名称
可以使用如下的 SQL 查询语句来获取工资最高的员工所在的部门名称:
```
SELECT departments.department_name
FROM departments
JOIN employees
ON departments.department_id = employees.department_id
WHERE employees.salary = (
SELECT MAX(salary)
FROM employees
);
```
其中,`departments` 是部门表的表名,`employees` 是员工表的表名。该查询语句使用了一个子查询来获取最高工资,然后在主查询中使用 `JOIN` 连接了部门表和员工表,并使用 `WHERE` 条件来筛选出与最高工资相等的员工,最后输出他们所在的部门名称。
请注意,这里假设部门表中有一个名为 `department_id` 的列,用于表示部门的唯一标识符。如果你的数据模型不同,需要相应地修改查询语句。