关于sql:mysql join,即使0

MySQL join, even when 0

本问题已经有最佳答案,请猛点这里访问。

我正在执行以下操作,以创建用户报告

1
2
3
4
5
SELECT b.username, b.name, b.permissiontoedit, a.total, a.user
FROM (SELECT user, Count( * ) AS total
FROM products
GROUP BY user)a
JOIN user b ON a.user = b.username

这应该提供一个包含用户名、全名、权限(1/0)和条目总数的表。

遗憾的是,查询只列出用户,这些用户在表products中创建了多个条目。但是我需要所有用户,如果没有在products中输入任何条目,它应该显示0或什么都没有。

我在哪里犯了错误?


使用左联接可以获得结果:

1
2
3
4
5
6
7
8
SELECT
    u.username, u.name, u.permissiontoedit, COUNT(p.user) as total
FROM
    user u
LEFT JOIN
    products p
ON
    u.username = p.user

注意:count(expression)只计算非空行,而对每行进行计数的count(*)。