MySQL-sql99-exists后面的子查询+案例讲解
2022/5/24 2:21:21
本文主要是介绍MySQL-sql99-exists后面的子查询+案例讲解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
四、exists后面(相关子查询)
其实就是一个bool类型
#四、exists后面(相关子查询) # 其实就是一个bool类型 select exists(select `employee_id` from `employees`)
判断exist后面有没有值
没有值的情况如下:
select exists(select `employee_id` from `employees` where `salary`=30000)
案例:查询有员工的部门名
# 查询有员工的部门名 SELECT `department_name` FROM `departments` d WHERE EXISTS( SELECT * FROM `employees` e WHERE e.`department_id`=d.`department_id` );
也可以用in的方式
# 查询有员工的部门名 select `department_name` from `departments` d where d.`department_id` in( select `department_id` from `employees` )
查询没有女朋友的男神信息
# 查询没有女朋友的男神信息 select bo.* from `boys` bo where bo.`id` not in( select b.`boyfriend_id` from `beauty` b )
也可以用exists
查询没有女朋友的男神信息
# 查询没有女朋友的男神信息 select bo.* from `boys` bo where not exists( select b.`boyfriend_id` from `beauty` b where bo.`id`=b.`boyfriend_id` )
案例讲解
查询和zlotkey相同部门的员工姓名和工资
#查询和zlotkey相同部门的员工姓名和工资 select `last_name`,`salary` from `employees` where `department_id`=( select `department_id` from `employees` where `last_name`='zlotkey' );
查询工资比公司平均工资高的员工的员工号,姓名和工资
#查询工资比公司平均工资高的员工的员工号,姓名和工资 SELECT `employee_id`,`last_name`,`salary` FROM `employees` WHERE `salary`>( SELECT AVG(`salary`) FROM `employees` );
查询各部门中工资比本部门平均工资高的员工的员工号,姓名和工资
#查询各部门中工资比本部门平均工资高的员工的员工号,姓名和工资 select e.`employee_id`,e.`last_name`,e.`salary`,e.`department_id` from `employees` e inner join ( select avg(`salary`) ag,`department_id` from `employees` group by `department_id` ) ag_dep on e.`department_id`=ag_dep.`department_id` where e.`salary`>ag_dep.ag 。 查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 5.查询在部门的location_id为1700的部门工作的员工的员工号 6.查询管理者是King的员工姓名和工资 7.查询工资最高的员工的姓名,要求first_name和last_name显示为一列,列名为姓.名
查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名
#查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 select e.`employee_id`,e.`last_name` from `employees` e where e.`department_id` in ( select distinct `department_id` from `employees` where `last_name` like '%u%' );
查询在部门的location_id为1700的部门工作的员工的员工号
#查询在部门的location_id为1700的部门工作的员工的员工号 SELECT e.`employee_id` FROM `employees` e WHERE e.`department_id` IN ( SELECT `department_id` FROM `departments` WHERE `location_id` =1700 );
这一题 也可以用any来做
#查询在部门的location_id为1700的部门工作的员工的员工号 SELECT e.`employee_id` FROM `employees` e WHERE e.`department_id` =ANY ( SELECT `department_id` FROM `departments` WHERE `location_id` =1700 );
查询管理者是K_ing的员工姓名和工资
#查询管理者是K_ing的员工姓名和工资 select e.`last_name`,e.`salary` from `employees` e where e.`manager_id` =any ( select `employee_id` from `employees` where `last_name` ='K_ing' );
查询工资最高的员工的姓名,要求first_name和last_name显示为一列,列名为姓.名
#查询工资最高的员工的姓名,要求first_name和last_name显示为一列,列名为姓.名 select concat(e.`first_name`,e.`last_name`) '姓.名' from `employees` e where e.`salary` = ( select max(`salary`) from `employees` );
这篇关于MySQL-sql99-exists后面的子查询+案例讲解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-02MySQL 3主集群搭建
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解