2020-06-17
阅读量:
837
6月17日学习
子查询
最多可以嵌套32层
值与空值比较返回的结果也为空值
如果子句in判断条件中有null值那返回结果也为null值
week 函数有2种模式 年初不满7天为0周,这样一年有52周,年初不满7天算为1周,一年有53周.
子查询可以出现在select子句,where/having子句,出现在from子句中.
where 中条件中不能直接使用聚合函数,需要设置别名或需要使用子查询.
子查询优化
MySQL从4.1版本开始支持子查询,使用子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作。
子查询虽然很灵活,但是执行效率并不高。执行子查询时, MySQL需要为内层子查询的查询结果建立一个临时表,然后外层主查询在临时表上进行查询和筛选。查询完毕后再撤销这些临时表,这里多了-一个创建和销毁
临时表的过程。因此,子查询的速度会受到一定的影响,如果查询的数据量比较大,这种影响就会随之增大。
优化方法:可以使用连接查询( join )代替子查询,连接查询不需要建立临时表,因此其速度比子查询快。所有的连接查询都可以替换为子查询,但并不是所有的子查询都可以用连接查询代替。当where子句中需 要使用聚合函数作为筛选条件时,只能使用子查询。






评论(0)


暂无数据