表子查询
概念
表子查询:子查询返回的结果是多行多列。表子查询与行子查询非常相似,只是行子查询需要产生行元素,而表子查询没有
行子查询是用于where条件判断:where子查询
表子查询是用于from数据源:from子查询
基本语法
select 字段表 from (表子查询) [where][group by][having][order by][limit];
mysql> select * from class1_score;
+------+--------+-------+
| id | name | score |
+------+--------+-------+
| 1 | 李新 | 67 |
| 2 | 张建 | 75 |
| 1 | 吴浩波 | 80 |
| 1 | 蔡玉婷 | 86 |
| 1 | 余晓庆 | 65 |
| 1 | 张栗 | 75 |
+------+--------+-------+
6 rows in set (1.71 sec)
-- 查询每班分数最高的学生。注意要加上别名!!!另外分组只会显示头一行数据,所以必须在分组前进行排序
mysql> select * from (select * from class1_score order by score desc) as temp group by id;
+------+--------+-------+
| id | name | score |
+------+--------+-------+
| 1 | 蔡玉婷 | 86 |
| 2 | 张建 |