关于sql除运算的一点理解

关于sql除运算的一点理解

之前一直不能准确理解除运算,试了半天终于明白过来,以下将以一个例子,来说说 我的理解。
先建立两个表,分别是“球队”和“比赛”:

create table 球队
(
	球队名 varchar(20),
	成立时间 date,
	主场 varchar(20),
	人数 int,
);
create table 比赛
(
	记录编号 int not null,
	队名 varchar(20),
	比赛编号 int,
	场地编号 int,
);

然后插入了四条数据:

insert into 比赛 values(1,'厂州恒太',1,1);
insert into 比赛 values(2,'山鲁东能',1,1);
insert into 比赛 values(3,'下海下港',2,3);
insert into 比赛 values(4,'山鲁东能',2,3);

假设我们要求出所有比赛(两场)都参加了的球队,可以用以下sql语句完成(除法):

select 球队名 from 球队 A where not exists
(
	select 比赛编号 from 比赛 B where not exists
	(
		select * from 比赛 C where C.队名=A.球队名 and C.比赛编号=B.比赛编号
	)
);

这里,我们可以理解为两个“for循环”,先循环球队名,再循环比赛编号,由于not exists的缘故,我们执行二重循环最里面的select语句。只要所有都被搜索到,那么可以这么理解:
在这里插入图片描述
但若是有一个没有被搜索到,则会是以下过程:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值