我有以下表格:琛對NULL值
- URLInfo(UID,網址,host_ip)
- 統計(SID,網址,國家,平臺,源,計數)
「URLInfo」有很多「Stats」,我想獲得給定「URLInfo」的count屬性的總和。這很簡單,可以通過連接查詢完成。
但是,對於我的特殊情況,當「統計」表中沒有相應的條目時,我想爲總和獲得值0。 sum是一個集合函數完全忽略了空值,我不能拿出正確的查詢。
我該怎麼做?
我有以下表格:琛對NULL值
「URLInfo」有很多「Stats」,我想獲得給定「URLInfo」的count屬性的總和。這很簡單,可以通過連接查詢完成。
但是,對於我的特殊情況,當「統計」表中沒有相應的條目時,我想爲總和獲得值0。 sum是一個集合函數完全忽略了空值,我不能拿出正確的查詢。
我該怎麼做?
您可以使用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;
我認爲它應該是'count'列的總和,而不是'sid'列 – Aegis
可以使用COALESCE
功能。它從列表中返回第一個非NULL值。
要找到一個單一的URL的數量,這應該做的伎倆:
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;
你嘗試過什麼到目前爲止?顯示您的解決方案嘗試將有所幫助 – Aegis
@Aegis現在好了嗎? – user2064000