【问题标题】:MySQL join, even when 0 [duplicate]MySQL加入,即使为0 [重复]
【发布时间】:2014-09-25 09:43:48
【问题描述】:

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

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 中创建了多个 1 或多个条目。但我想要所有用户,如果没有在products 中输入任何条目,它应该显示 0 或什么都不显示。

我在哪里犯了错误?

【问题讨论】:

  • 你应该使用 OUTER JOIN。
  • 如果我将“OUTER”放在连接前面,则会发生错误:/

标签: mysql sql


【解决方案1】:

使用 LEFT JOIN 可以获得结果:

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(*) 相比,COUNT(expression) 只计算 NOT NULL 行。

【讨论】:

  • 不起作用!现在只显示 1 个用户。
猜你喜欢
  • 2012-11-12
  • 2017-12-14
  • 2012-06-16
  • 1970-01-01
  • 2015-03-09
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
相关资源
最近更新 更多