【问题标题】:How can i make this Complex query for SQL database我怎样才能对 SQL 数据库进行这个复杂的查询
【发布时间】:2021-08-13 00:42:54
【问题描述】:

我有一个如下所示的数据库:

玩家(UserId、邮件、密码、用户名、LastLogin)

排行榜(UserId*、等级、击杀数、死亡数)

匹配(MatchIdHostId*、ServerIp、StartTime、Team1Points、Team2Points)

MatchStats(UserId*、MatchId*、杀戮、死亡)

武器(IdWeapon、名称、伤害、射速、装填时间、射程)

库存(UserId*、WeaponType*、皮肤)


我需要一个查询来选择在至少 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 或者我做错了..

【问题讨论】:

  • 你试过什么?你遇到了什么问题?
  • @Akina 我试过这样的事情:SELECT LastLogin FROM Player WHERE UserId=(SELECT UserId FROM (SELECT * FROM MatchStats WHERE Deaths>12 AS TAB) WHERE COUNT(UserId)>3)) 但我觉得我离正确的查询还很远,也许我错过了一个加入,idk...
  • @gNt 编辑您的问题并努力重新打开问题。
  • @KaziMohammadAliNur 我编辑了它,它仍然关闭
  • @gNt 我已投票支持重新开放。希望它会尽快开放。同时您可以尝试这个解决方案:从存在的 Player p 中选择 lastlogin (从 MatchStats m where death>=12 和 p.UserId=m.UserId 组中选择具有 count(distinct matchid)>=3 的用户 ID 组)

标签: mysql sql database join subquery


【解决方案1】:

您可以使用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 
)

【讨论】:

    猜你喜欢
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    相关资源
    最近更新 更多