您的位置:首页 > 数据库 > MySQL

mysql 中 all any some 用法

2017-10-07 23:17 344 查看
原文来自:http://www.cnblogs.com/JesseLucky/p/6089514.html

-- 建表语句
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关键字是一样的功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: