空值的总和

时间:2017-03-16 20:17:06

标签: mysql join

我有以下表格:

  • URLInfo(uid, url ,host_ip)
  • 统计信息(sid, url ,国家,平台,来源,统计数据)

“URLInfo”有很多“Stats”,我想获得给定“URLInfo”的count属性的总和。这很简单,可以使用连接查询来完成。

但是,对于我的特定情况,当“Stats”表中没有相应的条目时,我希望获得总和的值0。 sum是一个聚合函数,完全忽略了null值,我无法提出正确的查询。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用LEFT JOIN,例如:

SELECT u.uid, SUM(IFNULL(s.sid, 0)) AS stats
FROM urlinfo u LEFT JOIN stats s ON u.url = s.url
GROUP BY u.uid;

答案 1 :(得分:1)

您可以使用COALESCE功能。它返回列表中的第一个非NULL值。

要查找单个网址的计数,这应该可以解决问题:

SELECT coalesce(sum(count), 0) as total_count 
FROM urlinfo INNER JOIN stats ON urlinfo.id = stats.url
WHERE urlinfo.id = <your_url_id>;

对于所有网址,您可以将查询编写为:

SELECT coalesce(sum(count), 0) as total_count 
FROM urlinfo LEFT JOIN stats ON urlinfo.id = stats.url
GROOUP BY urlinfo.id;