我已经成功破解了一个 SQL 查询,它一直在工作,直到我意识到数据库中的一些成员具有空名称,因为我们使用的插件删除了非 ascii 名称。我在我的页面上显示这些统计数据,让没有名字的人工作不太好。我知道如何在使用 WHERE 子句时不显示 NULL,但我不太确定何时不使用 WHERE 子句。
到目前为止我有什么-
SELECT player_stats.player_name, COUNT(player_kill.killer)
FROM player_stats
LEFT JOIN player_kill ON player_stats.player_id = player_kill.killer
GROUP BY player_stats.player_name
HAVING COUNT(player_kill.killer) > 1
ORDER BY COUNT(player_kill.killer) DESC;
最佳答案
WHERE
子句位于所有 JOIN
子句和 GROUP BY
之间。如果 WHERE player_name IS NOT NULL
不起作用,则名称可能是空字符串,而不是 NULL
,因此您也需要检查一下。
SELECT s.player_name, COUNT(*) AS count
FROM player_stats AS s
INNER JOIN player_kill AS k ON s.player_id = k.killer
WHERE s.player_name IS NOT NULL AND s.player_name != ''
GROUP BY s.player_name
ORDER BY count DESC;
此外,如果您不想获得 0 个计数,请使用 INNER JOIN
而不是 LEFT JOIN
。
关于mysql - SQL 查询不显示空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41599986/