最近名流塔姆很火,大家有没有玩过
先来看一下数据
需求:
在所有队伍里面,找到小队成员都处于“待命”状态的小队编号
三种方法:
方法一:双重否定法
所有队伍成员都处于待命状态 == 没有一个队伍成员不是待命状态的
select DISTINCT(team_id)
from Team T1
where not exists (
select *
from Team T2
where T1.team_id = T2.team_id
and
T2.STATUS <> "待命")
方法二:标记法
对所有处于待命状态的成员打标签,根据小队分组,查看小队成员的个数和打标签个数的人是否相等.
--方法二
对所有成员打上标记
select team_id from
(
select *,case when status ="待命" then 1 else 0 end "状态"
from Team) d
group by d.team_id
having MAX(状态) = 1 and MIN(状态) = 1
如果最大的状态是1 最小的状态也是1 说明什么, 状态都是1
1111 最大的是1 最小的也是1 都是1 都是待命的
方法三:求个数法
--方法三
根据team_id 分组,如果待命的个数和成员的个数一样,那么就是全部待命
select team_id
from Team
group by team_id
having count(*) = sum(case when status ="待命" then 1 else 0 end )
今天的主要目的就来给大家分享一下平常不用的exists。
其实最近的文章里面,用到的案例基本上都是 sql进阶里面的教程。
需要这本书的pdf可以私信博主。