复杂查询—子查询

基本概念子查询:指嵌入在其他sql语句中的select语句,也叫嵌套查询单行子查询:指只返回一行数据的子查询语句多行子查询:指返回多行数据的子查询,使用关键词 in 或者 all单行子查询显示与smith同一部门的所有员工//子查询mysql> select ename,deptno from emp where deptno = (select deptno from emp where ename = 'smith');+-------+--------+| ename |
摘要由CSDN通过智能技术生成

基本概念

  • 子查询:指嵌入在其他sql语句中的select语句,也叫嵌套查询
  • 单行子查询:指只返回一行数据的子查询语句
  • 多行子查询:指返回多行数据的子查询,使用关键词 in 或者 all

单行子查询

显示与smith同一部门的所有员工

//子查询
mysql> select ename,deptno from emp where deptno = (select deptno from emp where ename = 'smith');
+-------+--------+
| ename | deptno |
+-------+--------+
| smith |     20 |
| jones |     20 |
| scott |     20 |
| ford  |     20 |
+-------+--------+
4 rows in set (0.00 sec)

//再次过滤 不显示smith
mysql> select ename,deptno from emp where deptno = (select deptno from emp where ename = 'smith') and ename <> 'smith';
+-------+--------+
| ename | deptno |
+-------+--------+
| jones |     20 |
| scott |     20 |
| ford  |     20 |
+-------+--------+
3 rows in set (0.00 sec)

多行子查询 in

查询和部门10的工作相同的雇员的信息, 但是不含10自己的

mysql> select * from emp where job in (select distinct job from emp where deptno = 10) and deptno <> 10;
+-------+-------+---------+------+------------+---------+------+--------+
| empno | ename | job     | mgr  | hiredate   | sal     | comm | deptno |
+-------+-------+---------+------+------------+---------+------+--------+
|  7369 | smith | clerk   | 7902 | 1980-12-17 |  800.00 | NULL |     20 |
|  7566 | jones | manager | 7839 | 1981-04-02 | 2975.00 | NULL |     20 |
|  7698 | blake | manager | 7839 | 1981-05-01 | 2850.00 | NULL |     30 |
|  7900 | james | clerk   | 7698 | 1981-12-03 |  950.00 | NULL |     30 |
+-------+-------+---------+------+------------+---------+------+--------+
4 rows in set (0.00 sec)

多行子查询 all

显示工资比部门30的所有员工的工资都高的员工的信息(显示工资比部门30最高工资高的员工信息)

//方式一:使用all  大于所有
mysql> select * from emp where sal > all(select sal from emp where deptno = 30);
+-------+-------+-----------+------+------------+---------+------+--------+
| empno | ename | job       | mgr  | hiredate   | sal     | comm | deptno |
+-------+-------+-----------+------+------------+---------+------+--------+
|  7566 | jones | manager   | 7839 | 1981-04-02 | 2975.00 | NULL |     20 |
|  7788 | scott | analyst   | 7566 | 1987-04-19 | 3000.00 | NULL |     20 |
|  7839 | king  | president | NULL | 1981-11-17 | 5000.00 | NULL |     10 |
|  7902 | ford  | analyst   | 7566 | 1981-12-03 | 3000.00 | NULL |     20 |
+-------+-------+-----------+------+------------+---------+------+--------+
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值