【发布时间】:2022-01-01 06:03:11
【问题描述】:
SELECT sg.date, sg.groupName, sg.highlights,
user.display_name as displayName,
COUNT(uc.groupName) as cmtcnt
FROM `saved_groups` as sg
LEFT JOIN `user` on user.email = sg.userName
LEFT JOIN `user_comments` as uc on sg.groupName = uc.groupName
WHERE uc.deleted=0
GROUP BY sg.groupName
我有两个表,saved_groups 和 user_comments,查询的第二行应该(确实有效)返回一个额外的列,其中包含与每个组关联的 cmets 的数量。
但是,当一个组与它关联的 cmets 为零时,该组根本不会返回。返回的唯一行是具有> 0 cmets 的行。期望的行为是返回所有 groupNames,并为 uc 表中具有零关联 cmets 的那些行指定 0。
如何解决这个问题?
我试过了:IF(uc.deleted=1, 0, COUNT(uc.groupName)) as cmtcnt——但这没什么区别,返回的结果相同。
目前,我不确定接下来要尝试什么。
建议?
更新:
试过这个:
SELECT sg.date, sg.groupName, sg.highlights,
user.display_name as displayName,
COUNT(uc.groupName) as cmtcnt
FROM geom.saved_groups as sg
JOIN geom.user on user.email = sg.userName
JOIN geom.user_comments as uc on sg.groupName = uc.groupName
WHERE isnull(uc.deleted,0) in (0,1)
GROUP BY sg.groupName
得到:
#1582 - Incorrect parameter count in the call to native function 'isnull'
【问题讨论】:
-
将条件
uc.deleted=0移到ON子句中。