You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取曾效力过Zach所有球队的球员ID与姓名?

需求描述

我在MySQL数据库中有以下三张表:

team表

team_id   name
3         Rangers
12        Capitals
19        Red Wings
4         Bruins
212       Avalanche
102       Flyers
20        Islanders
50        Sabres
7         Stars

player表

id    name
2     Zach
1     Deb
17    William
9     Viktor
12    Andrew
41    Chris
22    Bobby
5     Phil
3     Roy
92    Li
6     Juan

players_in表

team_id   player_id   points
3         2           42
212       2           19
3         12          18
19        12          2
3         41          2
4         41          1
212       41          78
212       17          1
19        41          4
12        41          2
3         17          6
4         1           9
102       1           40
102       22          7
20        22          19
20        5           22
50        3           20
12        92          15
12        17          8
7         6           12

我需要获取曾效力过Zach所有球队的球员的name和id。已知Zach效力过Rangers(team_id=3)和Avalanche(team_id=212),期望结果如下:

name       id
William    17
Chris      41

解决方案

可以通过以下SQL语句实现需求:

SELECT p.name, p.id
FROM player p
JOIN players_in pi ON p.id = pi.player_id
WHERE pi.team_id IN (
    SELECT team_id
    FROM players_in
    WHERE player_id = (SELECT id FROM player WHERE name = 'Zach')
)
GROUP BY p.id, p.name
HAVING COUNT(DISTINCT pi.team_id) = (
    SELECT COUNT(DISTINCT team_id)
    FROM players_in
    WHERE player_id = (SELECT id FROM player WHERE name = 'Zach')
)
AND p.id != (SELECT id FROM player WHERE name = 'Zach');

逻辑说明:

  1. 通过子查询先获取Zach的player_id,再提取他所有效力过的team_id集合;
  2. 关联player和players_in表,筛选出所有曾在这些球队效力过的球员;
  3. 按球员分组后,统计每个球员在Zach的球队中效力过的不同球队数量,只有当该数量等于Zach总共效力的球队数时,才说明该球员覆盖了Zach的所有球队;
  4. 最后排除Zach本人,得到目标结果。

内容的提问来源于stack exchange,提问作者equanimity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:55:17