相关子查询:
比如
select t.id,t.name,t.pass from student t where 80<=(select f.score from f
where f.id=t.id and f.name='xxx')
这就是1个相关子查询,可以理解为2层循环,要想执行内层的查询,需要先从外层查询到1个值出来。
执行的顺序是,父查询1个值,子查询对这个得到的值进行1轮查询,总查询次数是m*n
因为子查询需要父查询的结果才能执行,所以叫相关子查询
不相关子查询:
比如:
select t.id,t.name,t.pass from t where t.id in (select f.id from f where f.score=70)
这就是1个不相关子查询,子查询的不需要父查询把结果传进来,所以叫不相关子查询
执行顺序是子查询先执行,得到结果后传给父查询,父查询就不用每次查询完1个值后再执行1轮子查询
由于2个查询是分开的,无关联的,所以叫不相关子查询,查询次数是m+n