带有比较运算符的子查询 例子: 找出每个学生超过他选修课程平均成绩的课程号 SELECT Sno, Cno FROM SC x WHERE Grade >=(SELECT AVG(Grade)FROM SC y WHERE y.Sno=x.Sno); 带有ANY或ALL谓词的子查询 使用ANY或ALL谓词时必须同时使用比较运算 语义为: > ANY 大于子查询结果中的某个值 > ALL 大于子查询结果中的所有值 < ANY 小于子查询结果中的某个值 < ALL 小于子查询结果中的所有值 >= ANY 大于等于子查询结果中的某个值 >= ALL 大于等于子查询结果中的所有值 例子 查询列Sdept中列值为CS的比列值不为CS的任意一个 学生年龄小的学生姓名和年龄 SELECT Sname,Sage FROM Student WHERE Sage < ANY (SELECT Sage FROM Studnet WHERE Sdept= ' CS ') AND Sdept <> ‘CS ' ; 带有EXISTS谓词的子查询 EXISTS谓词 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true” 或逻辑假值“false”。 *若内层查询结果非空,则外层的WHERE子句返回真值 *若内层查询结果为空,则外层的WHERE子句返回假值 NOT EXISTS谓词 *若内层查询结果非空,则外层的WHERE子句返回假值 *若内层查询结果为空,则外层的WHERE子句返回真值 注意:由EXISTS引出的子查询,其目标列表达式通常都用 * ,因为带 EXISTS的子查询只返回真值或假值,给出列名无实际意义。