一、子查询基本语法
两个基本表:
进行子查询,查询成绩大于等于85的学生实体的数据:
-
子句的作用:
SELECT stuid FROM score WHERE score >= 8;
- 整条语句的作用:
SELECT
*
FROM
student
WHERE
id IN ( SELECT
stuid
FROM
score
WHERE
score >= 85 );
二、in 和 not in
只有单条结果时,可以使用等于号(=)
SELECT
*
FROM
student
WHERE
id = ( SELECT
stuid
FROM
score
WHERE
score >= 85 );
对应 in 同样存在 not in ,
作用当然是取in查询内容之外的内容。
SELECT
*
FROM
student
WHERE
id NOT IN ( SELECT
stuid
FROM
score
WHERE
score >= 85 );
三、exists 和 not exists
需求为(如果存在某人达成成就,奖励所有人)
如果存在,列出所有:
SELECT
*
FROM
student
WHERE
id EXISTS ( SELECT
stuid
FROM
score
WHERE
score >= 85 );
如果不存在,列出所有
=如果存在,不列出任意内容:
SELECT
*
FROM
student
WHERE
id NOT EXISTS ( SELECT
stuid
FROM
score
WHERE
score >= 85 );