Mysql 仅选择玩过特定游戏且没有其他游戏的玩家
我对SQL是相当陌生的,我正试图提出一个问题。我有一个类似的数据集 玩家Mysql 仅选择玩过特定游戏且没有其他游戏的玩家,mysql,Mysql,我对SQL是相当陌生的,我正试图提出一个问题。我有一个类似的数据集 玩家 masterID firstName lastName 11111 Rob Caspian 22222 Bob Harper 33333 Jon Willow 44444 Ron Anderson 55555 Doug Blake 外表 masterID gameName 11111
masterID firstName lastName
11111 Rob Caspian
22222 Bob Harper
33333 Jon Willow
44444 Ron Anderson
55555 Doug Blake
外表
masterID gameName
11111 chess
11111 checkers
11111 chess
22222 chess
22222 chess
33333 monopoly
33333 monopoly
33333 monopoly
44444 chess
55555 risk
55555 chess
我想返回所有只玩国际象棋而不玩其他游戏的玩家的名字和姓氏。所以它应该回报鲍勃·哈珀和罗恩·安德森
SELECT player.firstName, player.lastName from player, appearances where player.masterID = appearances.masterID and appearances.gameName = "chess";
我有一个查询,它将返回所有曾经下过国际象棋的人,不管他们玩过其他什么游戏,但我不知道如何将它限制到只下过国际象棋的玩家。它也应该只返回一次玩家的名字。谢谢你的帮助 您只需在查询末尾添加另一个过滤器,即可过滤掉其他游戏中出现的MasterID:
SELECT player.firstName, player.lastName
from player
join appearances on player.masterID = appearances.masterID
where appearances.gameName = 'chess'
and masterID not in(select masterID from Appearances where gameName != 'chess')
您只需在查询末尾添加另一个过滤器,即可过滤掉其他游戏中出现的MasterID:
SELECT player.firstName, player.lastName
from player
join appearances on player.masterID = appearances.masterID
where appearances.gameName = 'chess'
and masterID not in(select masterID from Appearances where gameName != 'chess')
只需使用和即可获得结果,如下所示
SELECT A.firstName, A.lastName
FROM Player A LEFT JOIN Appearances B
ON A.masterID=B.masterID
GROUP BY A.firstName, A.lastName
HAVING SUM(B.gameName = 'chess')=COUNT(*);
查看它。只需使用和即可获得结果,如下图所示
SELECT A.firstName, A.lastName
FROM Player A LEFT JOIN Appearances B
ON A.masterID=B.masterID
GROUP BY A.firstName, A.lastName
HAVING SUM(B.gameName = 'chess')=COUNT(*);
看吧。啊,讨厌当我快写完一个答案时,“一个新答案”框弹出,我几乎是逐字逐句地输入。拥有upvote@Kevin我知道你从哪里来。谢谢。@I谢谢你的快速回答。你教会了我一些关于SQL的新知识!我将需要添加独特的,也是在最后的订单,但你的解决方案是伟大的工作!谢谢呃,讨厌当我几乎完成一个答案时,“一个新的答案”框会弹出,我几乎是逐字逐句地输入。拥有upvote@Kevin我知道你从哪里来。谢谢。@I谢谢你的快速回答。你教会了我一些关于SQL的新知识!我将需要添加独特的,也是在最后的订单,但你的解决方案是伟大的工作!谢谢我不知道SQL小提琴的存在。太好了!thanksI不知道SQL Fiddle的存在。太好了!谢谢