MYSQL学习笔记

子查询:

思路是将查询的范围一步一步地缩小,通过多张表之间的关联字段去确定范围,

类似于:

select * from table1 where value=any
(select value from table2 where value2=any
(select ...........))

注意:报错:[Err] 1242 - Subquery returns more than 1 row 
解决方法:在=号后面加any

但是,当遇到多张表关联,有的时候并不一定都用子查询,而是用到连接查询,要将多张表中的数据匹配到一起进行比较和筛选。

例如:查询出工资比其所在部门平均工资高的所有职工信息。

select * from work x inner join 
(select did,avg(salary) s from work group by did) as y on x.did=y.did where 
salary>s
注意,这里如果通过子查询,是查不到对应每个部门高于平均工资的职工,所以将各个部门的平均工资匹配到对应的每个职工记录中,再利用where查询各个部门出高于平均工资的职工。


嵌套函数:

错误写法:select max(count(score));

正确写法:select max(count) from (select count(score)as count from table)as x;



分组查询:

group by语句:group by一般和聚合函数一块使用。

      where 和group by 连用时,group by 必须写在where之后,

      group by之后加having。

注意:having、where、聚合函数、group by所有的操作都是针对from 后面的表里的数据,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值