SQL 中ANY和ALL的用法

最好有例子说明一下。谢谢!我有三张表,分别存放运动员信息,场地信息和比赛信息,现在要查找至少参加了运动员张三所参加的所有项目的其他运动员名单。Createtableath... 最好有例子说明一下。谢谢!
我有三张表,分别存放运动员信息,场地信息和比赛信息,现在要查找至少参加了运动员张三所参加的所有项目的其他运动员名单。Create table athlete
(Ano char(4) not null,
Aname char(8) not null,
Asex char(4),
Adept char(8) not null,
PRIMARY KEY(Ano)
)
create table item
(Ino char(4) not null,
Iname char(12),
Iplace char(8),
PRIMARY KEY(Ino)
)
create table grade
(Ano char(4) not null,
Ino char(4) not null,
Gintegral smallint CHECK (Gintegral in (null,'6','4','2','0')),
FOREIGN KEY(Ano) references athlete(Ano),
FOREIGN KEY(Ino) references item(Ino),
PRIMARY KEY(Ano,Ino)
)
select DISTINCT Aname
from athlete,grade,item
where athlete.Ano=grade.Ano and item.Ino=grade.Ino and Iname <any(
select DISTINCT Iname
from grade,athlete,item
where athlete.Ano=grade.Ano and item.Ino=grade.Ino and Aname='张三'
)
and Aname<>'张三'

请帮我解释下里面的<any 是什么含义?
展开
 我来答
freechan10
2020-02-14 · TA获得超过2.9万个赞
知道小有建树答主
回答量:263
采纳率:68%
帮助的人:12.4万
展开全部

any表示任意一个,all表示所有的。举例如下:

1、创建测试表,create table test_any_all(id number);

2、在test_any_all 表中插入测试数据;

insert into test_any_all values(5);

insert into test_any_all values(15);

insert into test_any_all values(25);

insert into test_any_all values(30);

commit;

3、查询表中全量数据;select t.*, rowid from test_any_all t;

4、编写语句,用any表达式,查询表中大于10,18,28三个数字中任意一个数据即可;

   select t.*, rowid sec from test_any_all t where id > any(10,18,28);

5、编写语句,用all表达式,查询表中大于10,18,28三个数字中最大数字的所有数据;

   select t.*, rowid sec from test_any_all t where id > all(10,18,28);

ZESTRON
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸... 点击进入详情页
本回答由ZESTRON提供
高考英语萧老师
2020-12-17 · TA获得超过628个赞
知道答主
回答量:737
采纳率:100%
帮助的人:36.5万
展开全部

停课不停学 some 和any的特殊用法

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9edcf2987
推荐于2017-11-22 · TA获得超过443个赞
知道答主
回答量:99
采纳率:0%
帮助的人:0
展开全部
any表示任意一个,all表示所有的。
如果有张学生记录表student中有一个属性组为age
现在要查找年龄在某个区间上的学生记录就有如下操作
1、查找年龄比15、16、22、21、17、18、19中任意一个都小的学生记录就有如下代码:
select *
from student
where age<any(15,16,22,21,17,18,19)

2、查找年龄比15、16、22、21、17、18、19中任意一个都大的学生记录就有如下代码:
select *
from student
where age>any(15,16,22,21,17,18,19)
/*这里用any 和all是等效的*/用all是大于所有的意思
用all就改为:
where age>all(15,16,22,21,17,18,19)

这里<any就是iname小于括号内部那个子查询所的结果中的任意一个值,也就是说小于其中最小的一个。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式