MySQL计数查询与组不返回任何内容

时间:2012-02-10 11:11:28

标签: mysql

我试图理解为什么MySQL中的这个查询根本不会返回任何结果,而我认为它应该返回一行,其中0为列值

select count(ps.id) as totalcount 
from tblpresi ps
inner join users_staging.tbluser u on u.id = ps.userid
where ps.id = 3678
group by ps.id

没有“分组依据”的相同查询按预期工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

不,它不会返回,因为您的查询根本不返回结果(可能没有ps.id = 3678,或者您的内连接排除了结果集中的每一行)。

如果您将查询更改为:

select count(1) as totalcount 
  from tblpresi ps
 inner join users_staging.tbluser u on u.id = ps.userid
 where ps.id = 3678
 group by ps.id

您将获得一行0

请注意如果您的ps.id在结果集中是唯一的(我不知道您的inner join是否会返回多行ps.id)您的group by条款不是必需的。

答案 1 :(得分:0)

既然你说你期望1行零计数,我认为没有ps.id为3678.

如果在空结果集上进行分组,则不能有任何组。 group by不“知道”where子句,它只是查看结果集。