SELECT game_co他们从未为PS4开发过游戏

时间:2019-11-23 20:09:38

标签: mysql sql mariadb mariasql

我有一个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语句,或者在考虑后不确定是否可以使用它。

2 个答案:

答案 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"]