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

转载于:https://www.cnblogs.com/JesseLucky/p/6089514.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值