WHERE子句中参与比较的表达式还可以是由SELECT-FROM-WHERE结构组成的查询块,称为子查询或嵌套查询。连接条件本身可能是一个递归的 SQL 查询,而且可以嵌套多层。格式如下:
   SELECT … FROM …
   WHERE … =
  (SELECT … FROM … WHERE … )
  子查询的结果可以是单个数据值,元组的属性值,或一个新的关系表。子查询有多个返回值时,用比较符:
  ● (IN或NOT IN)R :是或不是R中的一个值
  ● (<>,>,< )ALL R: 指'不等''大于'或'小于'R中的所有值。
  ● (=,>,< )ANY R: 指至少'等于''大于'或'小于'R中的一个值。


例题  例1,列出与李楷同班的同学的全部信息:
  SELECT *
  FROM STUDENT
  WHERE sclass =( SELECT sclass
  FROM STUDENT
  WHERE sname="李楷");
 输出结果如下:
  sno sname ssex sage sclass
  J20001 李 楷 m 19 JS2001
  J20002 张 会 f 20 JS2001
  J20003 王 者 m 20 JS2001
例题  例2,查找高于职工平均工资的职工信息:
  SELECT *
  FROM emptable
  WHERE salary >( SELECT AVG(salary)
  FROM emptable);
例题
 例3.查询本学期选课超过8门的学生人数,没有成绩的选课表示本学期正在选修的课程。
  SELECT COUNT(*)
  FROM student
  WHERE sno IN 注:选课>8的学号集 ( SELECT sno 选课的学号 FROM sc
  WHERE grade IS NULL
  GROUP BY sno 注:按学号分组 HAVING COUNT(*) > 8);