SQL - 左外部连接似乎不能解决问题



下面是我正在讨论的SQL语句。我有两张桌子。其中一个表包含所有玩家,并带有唯一的id。第二个表可以包含每个玩家的多个记录。每一项记录都有某种分数,即"最高突破"。这可能在0和147之间变化。

现在,我想要的是一个SQL,它总是给我在"p._id in()"中选择的所有玩家提供分数为147的记录数,或者如果没有找到记录,则为null。

但是这个SQL会给我一个包含0条记录的结果集。但它应该给我一个包含3条记录的结果集,每条记录都有一个空值表示"breaks"。

我在这里做错了什么?

SELECT p._id player, COUNT(fp.highest_break) breaks 
FROM player p LEFT OUTER JOIN frame_pos fp ON p._id = fp.player_id 
WHERE fp.highest_break = 147 
AND p._id IN (3,1,2) 
GROUP BY p._id ORDER BY breaks DESC

Btw这是一个SQLite数据库。

试试这个:

SELECT p._id player, COUNT(fp.highest_break) breaks 
FROM player p LEFT OUTER JOIN frame_pos fp ON p._id = fp.player_id 
AND fp.highest_break = 147 
WHERE p._id IN (3,1,2) 
GROUP BY p._id ORDER BY breaks DESC

在JOIN条件下移动fp.highest_break = 147而不是WHERE允许fp中的行为null。。。

最新更新