2017-03-16 88 views
-2

我有以下表格:琛對NULL值

  • URLInfo(UID,網址,host_ip)
  • 統計(SID,網址,國家,平臺,源,計數)

「URLInfo」有很多「Stats」,我想獲得給定「URLInfo」的count屬性的總和。這很簡單,可以通過連接查詢完成。

但是,對於我的特殊情況,當「統計」表中沒有相應的條目時,我想爲總和獲得值0。 sum是一個集合函數完全忽略了空值,我不能拿出正確的查詢。

我該怎麼做?

+1

你嘗試過什麼到目前爲止?顯示您的解決方案嘗試將有所幫助 – Aegis

+0

@Aegis現在好了嗎? – user2064000

回答

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

我認爲它應該是'count'列的總和,而不是'sid'列 – Aegis

1

可以使用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;