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

SELECT game_co WHERE they've never developed a game for PS4

我有一个 MariaDB SQL table,我需要找出哪个游戏公司从未为特定控制台开发过游戏。

一些 game_co 仅适用于 PC 和 Xbox,并且从未在 PS4 上开发过。一些公司在所有游戏机上开发了多款游戏,但他们的一款游戏仅适用于 PC,因此包含在 SELECT 中。没有字段可以检查公司是 XBOX、PC、Nintendo 还是仅 PS4。

我试过的是

SELECT game_co, FROM company

WHERE developed_on_ps4 = ('false');

我添加了 WHERE 个子句,但其中 none 个子句有效,它们都产生了与我在上面添加的代码片段相同的答案。

这个 returns 的结果太多了,我无法找到一种方法来确保 developed_on_ps4game_co 是 Ubisoft 时始终为假。

我是否需要使用 CASE 语句或其他我不确定在考虑后如何工作的东西。

你要的是公司名称不在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';

会return('Ubisoft', 'Epic'),使您的有效查询:

SELECT DISTINCT game_co FROM company WHERE game_co NOT IN ('Ubisoft', 'Epic');

return 一个条目,["Blizzard"]

我会简单地使用带有 having 子句的聚合来进行过滤。这会在单次 table 扫描中为您提供所需的结果:

select game_co
from company
group by game_co
having sum(developed_on_ps4 = 'true') = 0