mysql - 如果我的计数行为 0,则查询不返回任何结果
问题描述
我有一个用户数据库。我想返回信息,包括他们所在的组数量。我执行以下 SQL 查询
SELECT dbo.Users.UserId AS 'userId',
dbo.Users.UserName AS 'firstName',
dbo.Users.Surname AS 'surname',
dbo.Users.Photograph AS 'photograph',
dbo.Users.JobTitle AS 'jobTitle',
dbo.Users.EmailAddress AS 'emailAddress',
dbo.Users.Inactive AS 'inactive',
COUNT(dbo.UserGroups.userId) AS 'teams'
FROM dbo.Users,
dbo.UserGroups
WHERE dbo.Users.UserId = 27
AND dbo.UserGroups.UserId = dbo.Users.UserId
GROUP BY dbo.Users.UserId,
dbo.Users.UserName,
dbo.Users.Surname,
dbo.Users.Photograph,
dbo.Users.JobTitle,
dbo.Users.EmailAddress,
dbo.Users.Inactive
这将不返回任何结果,因为用户 id 27 在任何组中都没有,当它应该显示其他信息并且组/团队行应该是 0 时。
这适用于一个组或多个组中的用户
解决方案
可能是因为您使用的是隐式 INNER JOIN... 使用显式 LEFT JOIN。
尝试这个:
SELECT dbo.Users.UserId AS 'userId',
dbo.Users.UserName AS 'firstName',
dbo.Users.Surname AS 'surname',
dbo.Users.Photograph AS 'photograph',
dbo.Users.JobTitle AS 'jobTitle',
dbo.Users.EmailAddress AS 'emailAddress',
dbo.Users.Inactive AS 'inactive',
COALESCE(COUNT(dbo.UserGroups.userId), 0) AS 'teams'
FROM dbo.Users left join
dbo.UserGroups on dbo.UserGroups.UserId = dbo.Users.UserId
WHERE dbo.Users.UserId = 27
GROUP BY dbo.Users.UserId,
dbo.Users.UserName,
dbo.Users.Surname,
dbo.Users.Photograph,
dbo.Users.JobTitle,
dbo.Users.EmailAddress,
dbo.Users.Inactive
推荐阅读
- c - 来自简单程序的奇怪打印
- qlikview - 如何创建具有多个参数化实例的 qliksense 应用程序
- excel - 使用 VBA 在现有工作表中创建数据透视表
- r - GGPlot2 - 对每个 X 处的 y 值求和,用于多面板图
- javascript - 按值对对象数组中的值求和
- javascript - 为什么这会在我的控制台上打印两次?
- java - 为什么詹金斯没有在多分支构建中签出源代码
- java - 使用相同的比较器时,与 Arrays.sort 相比,Priority Queue 排序产生不同的结果
- python - 当我的 python 脚本包含一些 powershell 命令时,如何禁用 powershell 快速弹出窗口?
- python - 尝试合并此代码以使用具有唯一 ID 的 Pandas 应用