可是我爱你,如旅人于刀山剑阵中披满身荆棘,在辽远的戈壁,携浓过乡愁的希冀,朝圣般软下了双膝,脸上挂有浅笑和未干的泪迹。
子查询
一个 select 语句中包含另一个完整的 select 语句。
子查询就是嵌套查询,即 SELECT 中包含 SELECT,如果一条语句中存在两个,或两个以上 SELECT,那么就是子查询语句了。
where 型子查询
- 查询除小明之外所有同学院的同学的姓名
- 查询小明学院 id
1 | select major_id from student_info_table where name="小明"; |
- 查询学院所属学生
1 | select `name` from student_info_table where major_id = '?'; |
- 组合
1 | select `name` from student_info_table where major_id = |
from 型子查询
- 查询在公司代码为 222333 的同学并且学院 id 为 203 的学生名
- 查询公司代码为 222333 的同学
1 | select * from student_info_table where `internship_code`='222333' ORDER BY `id` asc ; |
- 查询学院 id 为 203 的学生
1 | select `name` as '姓名' from ? where major_id ="203"; |
- 组合
1 | select `name` as '姓名' from (select * from student_info_table where `internship_code`='222333' ORDER BY `id` asc ) as student_detail |
in 子查询
- 查询大于 21 岁的学院名
- 查询大于 21 岁的学院 id
1 | SELECT major_id from student_info_table where age>21; |
- in 查询多个学院 id 的学院名
1 | select major_name from major_info WHERE major_id in (SELECT major_id from student_info_table where age>21); |
exists 子查询
- 查询学生年龄大于22岁的学院是否存在
- 查询大于22岁学生学院id
1 | SELECT major_id from student_info_table where age>22; |
2.组合
1 | select * from major_info WHERE EXISTS (SELECT major_id from student_info_table where major_info.major_id = student_info_table.major_id and age>22); |
- not exitst 为不存在