解题思路
这道题目使用反向思维,我们第一步获取任意一门成绩小于等于85的学生,然后在过滤出不在该列表中的学生信息,即为所有科目成绩都大于85分。
创建示例数据
DROP TABLE IF EXISTS grade;
CREATE TABLE IF NOT EXISTS grade(name varchar(20),course varchar(20),score int);
INSERT INTO grade VALUES ('a','chinese',82),('a','math',75),('b','chinese',74),('b','math',99),('c','english',99),('c','math',90);
SELECT * FROM grade;
查询出任意一门成绩小于等于85的学生姓名
SELECT DISTINCT NAME
FROM grade
WHERE score <= 85
使用NOT IN查询出姓名不在该列表的学生信息
SELECT *
FROM grade
WHERE name NOT IN (
SELECT DISTINCT NAME
FROM grade
WHERE score <= 85)