MySQL 子查询
在 MySQL 中,子查询(Subquery)是指在一个 SQL 查询中嵌套另一个完整的查询语句。子查询通常用于从结果集中选择数据,作为外部查询的一部分来使用。
单行子查询
单行子查询返回单个值,通常用于比较或作为条件使用。
使用示例
示例: 查询学生中年龄最高的学生信息。
SELECT student_id, student_name, age FROM students WHERE age= (SELECT MAX(age) FROM students);
在上面的例子中,子查询 (SELECT MAX(salary) FROM students)
返回最大年龄,外部查询则使用该值来筛选出对应的学生信息。
多行子查询
多行子查询返回多个值,可以作为 IN
、NOT IN
或 EXISTS
等条件使用。
如有学生表studnents、班级表classes,现有统计王老师教学的所有学生。
SELECT student_id,student_name FROM students WHERE class_id IN (SELECT class_id FROM classes WHERE teacher_name='王老师');
统计学生年龄中大于平均年龄的学生
SELECT student_id,student_name FROM students WHERE age > (SELECT avg(age) FROM students);
总结
子查询在 MySQL 中是非常强大和灵活的工具,可以用于解决各种复杂的查询需求。但需要注意的是,过度使用子查询可能会影响性能,因此在设计查询时应考虑使用 JOIN 等其他方法来优化查询。