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

如何筛选同时游玩GameTypeID=222下两类游戏的玩家?

解决方法

关键逻辑梳理

要拿到符合要求的玩家,得盯死两个核心条件:

  1. 只算GameTypeID=222分类下的游戏
  2. 玩家必须同时玩过该分类里「GameName带%pjp%」和「GameName不带%pjp%」的游戏,缺一个都不行

修正后的SQL代码

SELECT x.PlayerID, x.Cellphone, x.FirstName, x.LastName
FROM TableX x
JOIN TableZ z ON x.PlayerID = z.PlayerID
JOIN TableY y ON z.GameID = y.GameID
WHERE y.GameTypeID = 222 -- 直接把非222类的游戏全过滤掉,从源头避免脏数据
GROUP BY x.PlayerID, x.Cellphone, x.FirstName, x.LastName
HAVING 
    -- 确认玩家玩过至少一款带%pjp%的222类游戏
    SUM(CASE WHEN y.GameName LIKE '%pjp%' THEN 1 ELSE 0 END) > 0
    AND
    -- 确认玩家玩过至少一款不带%pjp%的222类游戏
    SUM(CASE WHEN y.GameName NOT LIKE '%pjp%' THEN 1 ELSE 0 END) > 0
    -- 可选:如果要求玩家只玩222类游戏(不能玩其他分类),就加上下面这行
    -- AND COUNT(DISTINCT y.GameTypeID) = 1;

代码解释

  • WHERE y.GameTypeID = 222:这是解决你之前返回非222类数据的关键——提前把无关的游戏记录筛掉,不让它们进入后续聚合计算
  • GROUP BY:按玩家分组,方便统计每个玩家的游戏类型覆盖情况
  • HAVING里的两个统计:分别验证玩家是否同时满足两类游戏的游玩要求,只有两个条件都满足才会被选中
  • 最后那行可选代码:如果你的需求是「玩家只能玩222类的这两种游戏,不能碰其他分类」,就加上;如果允许玩家同时玩其他分类但必须满足222类的两种要求,删掉就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:36:08