MySql 子查询

 

 

子查询

1.是一个查询语句中包含另一个查询语句

作用:作为条件

列如: 查询雇员的薪资高于“clark”的雇员信息

查询雇员薪资高于1500的雇员信息

select * from emp where sal>1500

语法:

select 查询内容

from 表

where 字段 operator(子查询)

-- (1) 标量子查询

指返回的是一个单一的值

列如: 查询雇员的薪资高于“clark”的雇员信息

select * from emp

where sal>(select sal from emp where ename='clark')

-- (2) 行子查询

指返回的结果是一行N列

列如:查询雇员表中部门职位与"ALLEN"相同的雇员信息

select * from emp where (deptno,job)=

(select deptno,job from emp where ename='allen')

--(3)列子查询

指返回的结果是多条数据

在列子查询中的操作符: in any all some EXISTS

不能使用单行操作符: >< >= <= !=

-- 1.使用in的列子查询

列如: 查询部门20中同部门10中职位相同的雇员信息查询部门10中有哪些职位

select job from emp where deptno=10

select * from emp

where job in (select job from emp where deptno=10)

and deptno =20

--2. 使用any或者是some列子查询

any:返回结果中的任何一个数据

some 是any的别名,很少使用

列如:查询雇员emp表中月薪低于任何一个clerk月薪的雇员信息

查询从事职位clerk的月薪

select sal from emp where job='clerk'

select * from emp

where sal<any(select sal from emp where job='clerk')

--3.使用all的列子查询

all 值返回结果中的所有数据

列如:查询雇员emp表中月薪低所有clerk月薪的雇员信息查询从事职位clerk的月薪

select * from emp

where sal>all(select sal from emp where job='clerk')

-- 4.使用exists列子查询

exists表示存在的意思

使用exists关键字时,子查询语句返回的并不是查询记录的结果集而时一个布尔类型的值

如果子查询有满足条件的记录则返回true ,则会执行主查询

如没有满足条件的记录返回false,则不会执行主查询

列如: 查询dept表中有雇员的部门信息

 select * from dept

where exists(select ename from emp where deptno =dept.deptno)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值