COUNT(*)有和没有GROUP BY,没有匹配的行

Zep*_*hyr 3 mysql sql

考虑具有以下记录的关系表(Balance,Customer):

数据库表的截图

现在我在这里尝试了这两个查询:

-- Query 1:
select A.Customer, count(B.Customer)
from account A, account B
where A.balance < B.balance
group by A.Customer;

-- Query 2:
select A.Customer, count(B.Customer)
from account A, account B
where A.balance < B.balance;
Run Code Online (Sandbox Code Playgroud)

第一个查询没有输出.使用第二个查询,我得到一个count = 0的输出.

在这两种情况下,没有满足where条款中条件的行,因此不返回任何行.那么为什么count函数仅在第二种情况下给出输出?

Gor*_*off 5

没有group by 始终返回一行的聚合查询(如果它在语法上是正确的).这样的计数就是0.

一个聚合查询,group by每组返回一行.如果没有组,则没有行.

  • 有0行符合您的条件,为什么您期望计数为1?(你想用你的查询实现什么?) (3认同)
  • 是的,你得到一行,那一行的`count(B.consumer)`值为零.但你真的不应该使用第二个查询. (3认同)