spring事务传播
required ,外部没有事务开启新事务,外部有事务就加入,属于同一个事务,一个回滚全部回滚。
非聚集索引:搜答案老是看到很多版本就很烦。
比如网上的跟高性能mysql不一样。
mysql窗口函数面试题
面试完美世界sql失利,故做总结。
一般简单的就记住,select from where group by having order by desc limit 0,1
但是面试肯定问分组,聚集函数,每一科的最高分。
每科最高分
这里的考点是分组后的查询只能够查分组字段和聚集函数的字段(这里其他信息都被消除了,不管是行还是列),我们要首先找到按哪一列分组,这里肯定是科目,然后max(分数),最后连接查询。
分组是相当于返回一行代表一组,所以select里面只能有分组字段和聚集函数字段。并且没法获取每一组前n个。
面试问每一科目前n名或者第n名就要用到窗口函数,这个函数一般放到select,并且select是最后执行,所以要用子查询进行二次查询。
select * from(select *,rank() over(partition by 科目 order by 分数 desc ) as rank from score)as a where a.rank<=n;
select * from (select *, avg(成绩) over (partition by 科目) as avg_score
from 成绩表) as b where 成绩 › avg_score;
这个是算分组后的平均值,聚集函数做窗口函数,可以得到每一科目高于平均分的学生。