sqlite提取数据集,其中一个集合中的不同行需要具有特定值

sqlite提取数据集,其中一个集合中的不同行需要具有特定值,sqlite,Sqlite,我有这样一个结构-它的一系列注册游戏,每个游戏至少有2名玩家,但最多可以有多人在同一个游戏中玩: gamenumber,team,name,points 1000,team tower, Tom Smith, 100 1000,team vegas, John Little, 90 1000,team windy, Andy Cooper, 20 1001,team woods, Marie Jones, 120 1001,team windy, Andy Cooper, 40 1002,

我有这样一个结构-它的一系列注册游戏,每个游戏至少有2名玩家,但最多可以有多人在同一个游戏中玩:

gamenumber,team,name,points

1000,team tower, Tom Smith, 100
1000,team vegas, John Little, 90
1000,team windy, Andy Cooper, 20

1001,team woods, Marie Jones, 120
1001,team windy, Andy Cooper, 40

1002,team woods, Marie Jones, 20
1002,team tower, Tom Smith, 11

1003,team tower, Tom Smith, 89
1003,team bars, Jonathan Swift, 21
1003,team hammock, Bill Mccain, 31
1003,team windy, Andy Cooper, -1
要提取所有“Tom Smith”游戏,我将执行此查询-该查询工作正常:

select id, gamenumber, team, name, points 
from `games` 
where gamenumber in ( 
  select gamenumber
  from `games`
  where name = 'Tom Smith'
  and team = 'team tower'
)
它提取tom玩过的所有游戏,以及tom玩过的游戏的所有gameid,从而生成 完整游戏的列表

我想要的是能够过滤并说:

1我希望所有游戏都是完整的,意思与上面类似,它提取了游戏上的所有gameid记录,Tom Smith在其中扮演过Andy Cooper,而只有他在其中扮演Andy Cooper的游戏

它应该包括汤姆和安迪可能不止两人一起玩的游戏,但只包括这两人一起玩的游戏

上述数据集im之后的结果为:

gamenumber,team,name,points

1000,team tower, Tom Smith, 100
1000,team vegas, John Little, 90
1000,team windy, Andy Cooper, 20  

1003,team tower, Tom Smith, 89
1003,team bars, Jonathan Swift, 21
1003,team hammock, Bill Mccain, 31
1003,team windy, Andy Cooper, -1

1004,team woods, Andy Cooper, 70
1004,team tower, Tom Smith, 53
在sqlite查询中是否可以这样做>

2如果我能得到上述两人相互玩过的游戏列表,我也希望能够做到: 2.1汤姆赢了安迪的哪场比赛?汤姆在一场比赛中得分最高

数据集的结果:

1000,team tower, Tom Smith, 100
1000,team vegas, John Little, 90
1000,team windy, Andy Cooper, 20  

1003,team tower, Tom Smith, 89
1003,team bars, Jonathan Swift, 21
1003,team hammock, Bill Mccain, 31
1003,team windy, Andy Cooper, -1
2, 189
2.2汤姆赢得整场比赛,安迪也参加了比赛的游戏数量摘要-以及汤姆在与安迪比赛并获得第1场比赛位置的游戏中的得分摘要-数据集的结果:

1000,team tower, Tom Smith, 100
1000,team vegas, John Little, 90
1000,team windy, Andy Cooper, 20  

1003,team tower, Tom Smith, 89
1003,team bars, Jonathan Swift, 21
1003,team hammock, Bill Mccain, 31
1003,team windy, Andy Cooper, -1
2, 189

我希望它是3个独立的查询,因为我想将它们用于不同的目的-如果可以在查询中这样做?

一种简单的方法是聚合:

SELECT id, gamenumber, team, name, points 
FROM games
WHERE gamenumber IN (
    SELECT gamenumber
    FROM games
    WHERE
        (name = 'Tom Smith' AND team = 'team tower') OR
        (name = 'Andy Cooper' AND team = 'team windy')
    GROUP BY gamenumber
    HAVING MIN(name) <> MAX(name)
);

超级,这似乎产生了一个他们对彼此比赛的列表,但我如何纠正上面提到的团队+名称?从理论上讲,在不同的团队中可能会有相同的名字,只是另一个人有相同的名字?非常感谢!伟大的小提琴手不知道它的存在!你知道我是否也想总结一下前汤姆·史密斯在与安迪的比赛中赢得的比赛吗?根据上面的摘录,将他得到的总分数与安迪得到的总分数相加?这可以放在1个sql语句中吗?或者我该怎么做?@MdTp您应该提出一个新问题,因为您的新要求与您最初提出的要求有很大不同。