在没有结果的查询中使用sum()时返回null

时间:2019-07-03 10:40:34

标签: mysql

在查询中使用sum()而没有结果时返回空行

例如我有这张桌子:

 | id | name | visit | active |

 | 1  | ali |  4   |    0   |

 | 2  | ali |  8   |    0   |

然后我运行此查询:

select name, sum(visit) visit

from table 

where active = 1

因为此查询不是结果

返回此:

| name | visit |

| null | null  |

我不希望结果中有任何行

我可以用sql方法解决问题吗?

3 个答案:

答案 0 :(得分:1)

select name, sum(visit)
from table 
where active = 1
group by name
having sum(visit) is not null;

答案 1 :(得分:0)

我建议使用条件聚合:

SELECT name, SUM(active = 1) visit_cnt
FROM yourTable;

这样,您的应用程序将始终收到包含访问计数的单行,该计数将为零或更大。

答案 2 :(得分:0)

select tmp.* from
(
    select name, sum(visit) as visit
    from table 
    where active = 1
) as tmp
where tmp.visit is not null