我有以下表格:
“URLInfo”有很多“Stats”,我想获得给定“URLInfo”的count属性的总和。这很简单,可以使用连接查询来完成。
但是,对于我的特定情况,当“Stats”表中没有相应的条目时,我希望获得总和的值0。 sum是一个聚合函数,完全忽略了null值,我无法提出正确的查询。
我该怎么做?
答案 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;