mysql总结--子查询

出现的位置
	select后面
	from后面
	where或having后面
		重点使用,也是使用最多的
	exists后面(相关子查询)

子查询放在小括号内
子查询一般放在条件右侧
子查询优先于主查询
搭配单行操作符
	= > < <> >= <=
搭配多行操作符
	in、any/some、all

单行子查询

查询工资比zws工资高的员工
select *
from employee
where salary > (
	select saraly
	from employee
	where name='zws'
);


查询最低工资大于50号部门最低工资的部门id和其最低工资
1查询50号部门的最低工资
select Min(saraly)
from employee
where id = 50;

2查询每个部门的最低工资
select Min(saraly),id
from employee
group by id;

3筛选2,满足min(saraly)>1
select Min(saraly),id
from emloyee
group by id
having Min(saraly) > (
	select Min(saraly)
	from employee
	where id = 50;
)

多行子查询

in:/not in
	等于列表中的一个
any/some
	和子查询返回的某一个值比较,满足任意一个
all
	和返回的所有值比较,都满足
返回其他部门中比job_id为It部门任一工资低的员工信息
select *
from employee
where saraly<any(
	select distanct saraly
	from employee
	where job_id = 'It'
) and job_id <> 'It';
from后面的查询必须给表起一个别名

查询每个部门的平均工资的工资等级
select ag_dep.*,g.grand_level
from (select avg(salary) from employee group by departmnet_id) ag_dep
inner join job_grands g
on ag_dep.ag
between lowest_sal and highest_sal;


相关子查询(exists后面)

该查询与前面最大的不同是:
	先执行外查询,再根据内查询去过滤结果集
	所有相关子查询更快

select exists(select employee_id from employee);//结果为1
如果exists后面存在,结果就为1,否则为0
案例1
查询员工的部门名
select department_name
from department d
where exists(
	select * from employee e
	where d.department_id = e.employee_id
);

分页查询

语法:
select 查询条件 
from 表1 【join type】 join 表2 on 连接条件
where 筛选条件
group by
having 分组后筛选
order by 排序
limit offset(起始索引,从0开始),size(条目数)
SELECT * FROM review limit 0,5;

union联合查询

将多个查询结果合并成一个结果,常用于没有直接关联的表的查询,但查询信息一致

查询语句1
union
查询语句2
...

注意事项:
1.要求多条查询语句的查询列数一致
2.要求多条查询语句的每一条的类型和顺序最好一致
3.union会自动去掉重复项,如果不想去掉重复项,改为 union all
引入案例
查询部门编号>90或邮箱包含a的员工信息
select * from employee where email like '%a%'
union 
select * from employee where department_id>90;


查询中国国家和美国国家中用户年龄大于12岁的用户信息
select cid,cname,cage from u_c where cage>12
union 
select aid,aname,aage from u_a where aage>12;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值