首页 > 解决方案 > 如果表不包含特定 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 

d

对于idLoc=1查询应该返回一行count(*)=3 and idLoc=1

对于idLoc=2查询应该返回一行count(*)=0 and idLoc=2

对于idLoc=3查询应该返回一行count(*)=1 and idLoc=3

标签: mysqlsqlgroup-byleft-join

解决方案


您可以删除GROUP BY

select <someid> as idLoc, count(x)
from Location l left join
     hasVotedLocation hvl
     on hvl.idLoc = l.idLoc ;

这将始终返回一行。如果没有匹配的行,count()将是。0


推荐阅读