sql数据库中,如何确保条件中的所有数据都被查出,如果不存在,则用0代替?

数据表test中有以下数据

{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的值。
现在我想统计所有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},

除了在查出结果以后,再用组装结果以外,能直接用sql语句来实现吗?

clipboard.png

clipboard.png

clipboard.png

阅读 2.6k
1 个回答

不知道你说的是这种实现方法不,你数据表中没有parent_key 为 4,5的记录,自然也不会去统计了。

SELECT `parent_key`,sum(`parent_key`) FROM `test` GROUP BY `parent_key`;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进