1.什么是子查询?
就是在一个查询语句的“局部区域”又出现的查询语句;
语句1:
select * from product where price > 5000;
语句2a:
select 5000;
语句2b:
select 5000 as c;
可见:语句2,其实只是最终查询出一个“数据”。
结合语句1和语句2:
select * from product where price > (select 5000 as c );
此时,该语句,跟之前的 “语句1” 效果一样。
这里,就把该括号中的那个select语句,称为“子查询”;
相应的,其外部的那个select语句,就称为“主查询”;
子查询:
就是在一条查询语句的需要数据的位置,使用一个select语句的查询结果来代表该数据的一种形式。
该子查询语句的结果,往往并不是“已知”的,而是一个正式的查询结果。
比如:
找出product表中,所有超过平均价的商品。
解决方法1:
分两步:
1找出平均价:
select avg(price) from product; #这里(目测)得到4287.66667
2以该找出的结果继续找所需要的商品:
select * from product where price > 4287.66667;
解决方法2:
将上述的2个语句整合为一个语句:
select * from product where price > (select avg(price) from product);