SQL 里搞复杂筛选的时候,嵌套查询真的挺好用。尤其是你想查一部分数据,又得先从别的表查点东西出来再用,直接在WHERE里塞个子查询就行。像那种“选修了课程 2 的学生”的需求,用个IN嵌套搞定,语句清晰,逻辑也挺直观。

查询块就是完整的SELECT-FROM-WHERE结构,嵌套查询就是在另一个查询的条件里再塞一个查询块。你会常见INEXISTS=这种用法,按场景灵活切换就对了。

比如查和“刘晨”一个系的学生,用个IN的子查询就能搞定。再进一步,如果一个学生只能属于一个系,直接把IN换成=,效率还能提升点。这种小技巧,挺实用。

啦,有时候你也可以把子查询换成连接查询,效率会高一点。就像这个例子:

SELECT S1.Sno, S1.Sname, S1.Sdept 
FROM Student S1, Student S2 
WHERE S1.Sdept = S2.Sdept AND S2.Sname = '刘晨';

顺带提醒下:子查询不能加ORDER BY,别写上去报错了还一脸懵。另外,如果子查询依赖外层的查询条件,那就是相关子查询,跑起来稍慢点,但逻辑上更灵活。

想多了解一点,可以看看这些链接:

如果你平时在写 SQL,偶尔会遇到那种多条件筛选、跨表查数据的需求,嵌套查询用得顺手真的省不少事。