鍍金池/ 問答/數(shù)據(jù)庫/ sql數(shù)據(jù)庫中,如何確保條件中的所有數(shù)據(jù)都被查出,如果不存在,則用0代替?

sql數(shù)據(jù)庫中,如何確保條件中的所有數(shù)據(jù)都被查出,如果不存在,則用0代替?

數(shù)據(jù)表test中有以下數(shù)據(jù)

{name: 'a', parent_key: 1,value: 11},
{name: 'b', parent_key: 3,value: 12},
{name: 'c', parent_key: 3,value: 13},
{name: 'd', parent_key: 3,value: 14},
{name: 'e', parent_key: 2,value: 15},
{name: 'f', parent_key: 1,value: 16}

使用sql語句SELECT COUNT(name) FROM test WHERE parent_key in (1,2,3,4,5) GROUP BY parent_key;

用這種方式的話,會自動忽略 parent_key 為4和5的值。
現(xiàn)在我想統(tǒng)計所有parent_key的count,如果沒有就返回 0,即

{parent_key: 1, count: 2},
{parent_key: 2, count: 1},
{parent_key: 3, count: 3},
{parent_key: 4, count: 0},
{parent_key: 5, count: 0},

除了在查出結(jié)果以后,再用組裝結(jié)果以外,能直接用sql語句來實現(xiàn)嗎?

clipboard.png

clipboard.png

clipboard.png

回答
編輯回答
汐顏

不知道你說的是這種實現(xiàn)方法不,你數(shù)據(jù)表中沒有parent_key 為 4,5的記錄,自然也不會去統(tǒng)計了。

SELECT `parent_key`,sum(`parent_key`) FROM `test` GROUP BY `parent_key`;
2018年9月4日 08:16