MySQL中all、any、some 查询的案例

1、准备数据表和数据

CREATE TABLE `exam` (
  `examid` int(11) NOT NULL AUTO_INCREMENT,
  `studentId` varchar(20) NOT NULL,
  `subjectId` varchar(20) NOT NULL,
  `score` int(11) NOT NULL,
  PRIMARY KEY (`examid`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
-- 因为主键是自增的所以不需要我们进行维护
INSERT INTO exam VALUES (NULL,'123456',1,60),(NULL,'126556',1,75),(NULL,'12156',2,93),(NULL,'654054',1,86),(NULL,'652314',2,80),(NULL,'645874',2,95),(NULL,'654321',2,93)

2、ALL 用在子查询前,通过比较运算符将一个表达式或列的值与子查询返回的一列值中的每一行进行比较,只要有一次比较的结果为 FALSE,则 ALL 测试返回 FALSE。

案例一:查询成绩比科目编号为“1”的这门课程的所有成绩都大的学生考试信息

SELECT * FROM exam WHERE score> ALL(SELECT score FROM exam WHERE subjectId=1)

说明:>ALL 表示大于每一个值。换句话说,它表示大于最大值。例如,>ALL (1, 2, 3) 表示大于 3。

3、ANY 与子查询在一起使用时,按照比较运算符、表达式或字段对子查询的结果的每一行进行一次计算和比较。只要有一次满足条件,那么 ANY 的结果就是真。
案例二:查询成绩比科目编号为“1”的任意一个成绩都大的考试信息

SELECT * FROM exam WHERE score> ANY(SELECT score FROM exam WHERE subjectId=1)

注意:"=ANY"运算符与"IN"等效。"< >ANY"运算符则不同于"NOT IN"。"< >ANY(A,B,C)" 表示不等于 A,或者不等于 B,或者不等于 C。"NOT IN(A,B,C)“表示不等于 A、不等于 B 并且不等于 C。”< >ALL"与"NOT IN"表示的意思相同

4、some和any的用法一样,这里就不过多介绍了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值