嵌套查询
语法格式
select 字段名列表 from 表名 where 字段名 运算符
(select 字段名 from 表名 where 条件)
注意:外层的where的条件必须和内层的select查询的字段名一样,个数也一样
如:把攻击值小于平均攻击值的名字和攻击值显示出来(sanguo表)
我们可以分开来查,然后合并成一条语句
分析:查名字和攻击值,条件是攻击值小于平均攻击值;
第一步:先求平均值
select avg(gongjizhi) from sanguo;
假设我们用avg记录查询出来的平均值
第二步:查找攻击值小于平均值的名字和攻击值
select name, gongjizhi from sanguo where gongjizhi<avg;
第三步:将上边两条合并
select name, gongjizhi from sanguo where gongjizhi<
(select avg(gongjizhi) from sanguo);
在举个栗子:找出每个国家攻击力最高的英雄的名字和攻击值
第一步:按国家分组找出攻击最大的攻击值
select max(gongjizhi) from sanguo
group by country;
第二步:显示以上英雄的名字和攻击值
select name, gongjizhi from sanguo where
gongjizhi in (第一步的结果);
第三步:合并上两步
select name, gongjizhi from sanguo
where gongjizhi in
(select max(gongjizhi) from sanguo
grounp by country);
将第三步改进一下:
select name, gongjizhi from sanguo
where (country, gongjizhi) in
(select country, max(gongjizhi) from sanguo
group by country);
方法不止一种,当然有更优的写法,现在不涉及。