mysql - 我怎样才能对 SQL 数据库进行这个复杂的查询
问题描述
我有一个看起来像这样的数据库:
播放器(用户 ID、邮件、密码、用户名、LastLogin )
排行榜(UserId *、等级、杀戮、死亡)
匹配(MatchId、HostId *、ServerIp、StartTime、Team1Points、Team2Points)
MatchStats ( UserId *, MatchId *, Kills, Deaths)
武器(IdWeapon、名称、伤害、火速、装填时间、射程)
库存(用户ID * ,武器类型*,皮肤)
我需要一个查询来选择在至少 3 场比赛中死亡超过 12 次(MatchStats.Deaths > 12)的每个玩家的 LastLogin。有人能帮我吗?我在可能的联接或子查询方面遇到了麻烦。
我试过类似的东西:
SELECT LastLogin FROM Player WHERE UserId=(SELECT UserId FROM (SELECT * FROM MatchStats WHERE Deaths>12 AS TAB) WHERE COUNT(UserId)>3))
或者
SELECT LastLogin FROM Player
WHERE (SELECT COUNT(SELECT Count(*) FROM MatchStats WHERE Deaths>12 GROUP BY UserId)>3 GROUP BY UserId;
但我觉得我离正确查询还很远,也许我错过了一个 Join 或者我做错了..
解决方案
你可以exists
用来检查一个球员在至少三场比赛中是否有 12 人死亡
select lastlogin from Player p
where exists
( select UserIdfrom MatchStats m
where deaths>=12 and p.UserId=m.UserId
group by userid
having count(distinct matchid)>=3
)
推荐阅读
- flutter - 读取列表中的元素以在颤动中呈现卡片小部件
- html - Chrome for Video JS 中的向后和向前搜索问题
- vue.js - Vue模板无法渲染ajax结果
- python - 通过rest api从nuxt应用程序中的按钮单击调用django任务
- flutter - 如何根据另一个集合的元素对一个集合进行具体排序?
- c++ - Coursera 分级机上的未知信号 6,在本地系统上工作正常
- python - 使用 python(pyautogui) 的键盘控制在我的 Mac 上不起作用
- testing - Nestjs请求,测试中的拦截器
- c# - EFCore IQueryable 的计数 > 0 但 ToList( 返回 0 条记录
- laravel - phpunit/php-token-stream 包被废弃,你应该避免使用它。没有建议更换