以下是我正在讨论的SQL语句。 我有两张桌子。一个包含所有玩家,拥有它唯一的ID。第二个表可以包含每个玩家多个记录。每条记录都有某种分数,即最高分数"。这可以在0到147之间变化。
现在我想要的是一个SQL总是给我所有选中的玩家" p._id IN()"如果找不到记录,则找到记录的计数为147,如果没有找到记录,则为null。
但是这个SQL会给我一个包含0条记录的结果集。但是它应该给我一个包含3条记录的结果集,每条记录都有一个空值,用于"休息"。
我在这里做错了什么?
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
顺便说一下:它是一个SQLite数据库。
答案 0 :(得分:0)
试试这个:
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条件而不是WHERE上移动fp.highest_break = 147
允许fp
中的行为空...