mysql - 如果表不包含特定 ID,则使用 group by 左连接不返回任何行
问题描述
我想知道有多少人评价了一个特定的位置。问题是我的 sql 仅在 hasVotedLocation 表包含特定位置的 ID 时才有效。这意味着如果没有人对特定位置进行投票,我将得到零行。
我的sql语句:
select count(*),l.idLoc from Location l
left join hasVotedLocation hvl
on hvl.idLoc=l.idLoc where l.idLoc=2
group by l.idLoc
对于idLoc=1
查询应该返回一行count(*)=3 and idLoc=1
对于idLoc=2
查询应该返回一行count(*)=0 and idLoc=2
对于idLoc=3
查询应该返回一行count(*)=1 and idLoc=3
解决方案
您可以删除GROUP BY
:
select <someid> as idLoc, count(x)
from Location l left join
hasVotedLocation hvl
on hvl.idLoc = l.idLoc ;
这将始终返回一行。如果没有匹配的行,count()
将是。0
推荐阅读
- kernel-module - 在 VxWorks 的 DKM 中访问 sys/select.h
- ios - Apple 分发证书已过期
- angular - ERR_FILE_NOT_FOUND 在使用 Angular 构建的 Chrome 扩展中刷新被覆盖的新标签时
- python - 在 Jupyter Notebook 中安装 SpaCy
- c++ - 流截断(Boost.Beast / Boost.Asio)
- r - 使用 tbl_summary 获取分类数据的均值
- reactjs - 更新地图内的状态挂钩
- c++ - 使用线程时内存分配问题
- reactjs - 如何使用 next-18next 设置测试环境 next.js 项目?在组件测试中导入 next-18next 的链接时失败
- xslt-2.0 - 如何将“包含”功能与外部列表一起使用