-- 建表语句 CREATE TABLE score(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),SUBJECT VARCHAR(20),score INT);-- 添加数据 INSERT INTO score VALUES (NULL,'张三','语文',81), (NULL,'张三','数学',75), (NULL,'李四','语文',76), (NULL,'李四','数学',90), (NULL,'王五','语文',81), (NULL,'王五','数学',100), (NULL,'王五 ','英语',90);-- 用一条 SQL 语句查询出每门课都大于 80 分的学生姓名 -- 想法: -- 难点:每门课的分数 -- 解决方案:把分数少于80分的进行排除(not exist-- not exists 字段 SELECT * FROM score a WHERE NOT EXISTS (SELECT * FROM score b WHERE a.name = b.name AND b.score < 80) ;-- not in 字段 SELECT * FROM score WHERE NAME NOT IN (SELECT NAME FROM score WHERE score<=80)-- all()方法 SELECT DISTINCT NAME FROM score a WHERE 80 < ALL(SELECT score FROM score WHERE a.name = NAME );
ANY关键字:
假设any内部的查询语句返回的结果个数是三个,
那么,
select ...from ... where a>any(...)
等同于
select ...from ... where a > result1 or a > result2 or a > result3
ALL关键字:
ALL关键字与any关键字类似,只不过上面的or改成and。
SOME关键字:
some关键字和any关键字是一样的功能。