【问题标题】:SQL how to return a value only if occurs more than 2 timesSQL如何仅在出现超过2次时才返回值
【发布时间】:2017-04-30 01:32:28
【问题描述】:

所以我基本上有一个名为“teams”的表,其中包含团队名称和团队 ID。我还有另一个名为 player 的表,大多数球员都通过名为 teamID 的列链接到一个团队。所以我需要的是一个 SQL 查询,它返回所有有 2 个或更多球员链接的球队。据我了解,这不能通过 1 个查询来完成。 所以我想做的是返回每个 teamID 以及它在表中出现的次数。我该怎么做?

那么我的第二个查询只会选择出现 2 次或更多次的 teamID

团队表:

|id|teamName|
|1 |scorpions|
|2 |dragons  |

玩家表:

|id|teamID|name|
|1 |1     |mark|
|2 |1     |rob|
|3 |2     |bob|

所以我最后需要的是整个球队表减去分配给他们的球员少于 2 名的球队

所以对于示例数据它应该只返回:

|id|teamName|
|1 |scorpions|

【问题讨论】:

  • 这可以通过单个查询轻松完成。你试过什么?同时提供样本数据和期望的结果。
  • 你熟悉HAVING子句吗?
  • 我更新了帖子以包含示例数据和示例 anwser

标签: mysql sql


【解决方案1】:

可以在一个查询中完成:

select t.id as team_id, t.teamName, 
       count(p.id) as player_count
from teams t
join players p on p.teamId = t.id
group by t.id, t.teamName
having count(p.id) > 1

加入牌桌,按球队分组,只选择超过 1 名球员的球队。

【讨论】:

  • nvm 我修复了 count 和 () 之间的查询中有一个额外的空格谢谢你的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 2020-05-22
相关资源
最近更新 更多