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

多条件SQL查询求助:获取符合指定条件的game_name列表

嘿,我来帮你搞定这个SQL查询问题!首先得明确下你的表结构——我假设你有两张表:一张是games(包含game_id和game_name),另一张是game_country_info(包含game_id、country和WC_Won字段),如果你的表名/字段名不一样,直接替换成实际名称就行。

你的需求是找出同时在印度、英国、法国、意大利这四个国家开展,且这四个国家对应的WC_Won全为0的游戏名称,我给你两种靠谱的写法,你可以根据自己的表结构选择:

写法一(先过滤再分组,简洁高效)

如果你的game_country_info表里,只有目标四个国家的记录需要考虑,或者你只想先筛出WC_Won为0的目标国家记录,再统计覆盖情况:

SELECT g.game_name
FROM games g
JOIN game_country_info gci ON g.game_id = gci.game_id
WHERE gci.country IN ('印度', '英国', '法国', '意大利')
  AND gci.WC_Won = 0
GROUP BY g.game_name
HAVING COUNT(DISTINCT gci.country) = 4;
  • 逻辑:先把不属于四个目标国家、或者WC_Won不为0的记录过滤掉,再按游戏名称分组,确保剩下的记录里刚好覆盖了全部4个国家,这样就满足“四个国家都开展且WC_Won全为0”的要求。

写法二(全量校验更严谨)

如果你的游戏可能在其他国家也有记录,而你需要严格确保仅针对这四个国家满足条件(不管其他国家的情况),可以用这种写法:

SELECT g.game_name
FROM games g
JOIN game_country_info gci ON g.game_id = gci.game_id
GROUP BY g.game_name
HAVING 
  -- 确保四个目标国家都有该游戏的记录
  SUM(CASE WHEN gci.country IN ('印度', '英国', '法国', '意大利') THEN 1 ELSE 0 END) = 4
  -- 确保这四个国家里没有任何一条WC_Won不为0的记录
  AND SUM(CASE WHEN gci.country IN ('印度', '英国', '法国', '意大利') AND gci.WC_Won != 0 THEN 1 ELSE 0 END) = 0;
  • 逻辑:用CASE表达式分别统计目标国家的覆盖数,以及目标国家中WC_Won不为0的记录数,只有当覆盖数是4、且异常记录数是0时,才符合要求。

如果你的game_name直接存放在国家信息表里(不需要关联games表),那可以简化成:

SELECT game_name
FROM game_country_info
WHERE country IN ('印度', '英国', '法国', '意大利')
  AND WC_Won = 0
GROUP BY game_name
HAVING COUNT(DISTINCT country) = 4;

你之前的查询可能没处理好“四个国家都必须存在”和“所有WC_Won都为0”这两个条件的结合,试试上面的写法应该就能得到正确结果啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:09:34