mysql 中 all any some 用法

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

posted @ 2016-11-22 15:25  JesseLucky  阅读(7393)  评论(0编辑  收藏  举报