-- 建表语句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 aWHERE 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关键字是一样的功能。