我有一个MariaDB SQL表,需要在其中查找哪个游戏公司从未针对特定游戏机开发过游戏。
有些game_co
仅适用于PC和Xbox,从未在PS4上开发过。一些公司在所有控制台上都开发了多个游戏,但是其中一个游戏仅是PC,因此包含在SELECT中。没有字段可以检查公司是XBOX,PC,Nintendo还是PS4。
我尝试过的是
SELECT game_co, FROM company
WHERE developed_on_ps4 = ('false');
我已在WHERE
子句中添加了这些子句,但它们都不起作用,它们都产生了与我在上面添加的代码段相同的答案。
这会返回太多结果,并且我无法找到一种方法来确保developed_on_ps4
在Ubisoft时始终为假。
我是否需要使用game_co
语句,或者在考虑后不确定是否可以使用它。
答案 0 :(得分:2)
我将简单地使用带有having
子句的聚合进行过滤。这样就可以在单个表扫描中获得所需的结果:
select game_co
from company
group by game_co
having sum(developed_on_ps4 = 'true') = 0
答案 1 :(得分:1)
您想要的是公司名称不在developed_on_ps4=true
的公司列表中的所有公司。
尝试这样的事情:
SELECT DISTINCT game_co FROM company WHERE game_co NOT IN (
SELECT DISTINCT game_co FROM company where developed_on_ps4='true'
);
如果您有这样的行:
game_co title developed_on_ps4
-------------------------------------
Ubisoft Game 1 true
Ubisoft Game 2 false
Epic Game 3 true
Blizzard Game 4 false
然后进行内部查询:
SELECT DISTINCT game_co FROM company where developed_on_ps4='true';
将返回('Ubisoft', 'Epic')
,使您的查询有效:
SELECT DISTINCT game_co FROM company WHERE game_co NOT IN ('Ubisoft', 'Epic');
将返回单个条目["Blizzard"]