“count count(n)as count”在count(n)= 0时返回零行

时间:2014-03-23 13:34:52

标签: neo4j

对于空数据库,match (n) return count(n);按预期返回值为0的一行,但match (n) return count(n) as count;返回零行,match (n) return count(n),1;也是如此。在结果中是否有别名或其他列,是否有某种方法可以使return对待count(n)相同?

1 个答案:

答案 0 :(得分:1)

你说"正如所料",但我不太确定会发生什么。没有任何查询匹配任何内容。然后当你返回一个聚合函数时,它并不是因为聚合函数计算为0,因为它根本不算数。没有比赛,所以没有机会进行计数。当return子句仅包含“无法访问”时,它返回0的事实。聚合表明它返回一个默认值。但是一旦你得到实际值 - 聚合,文字或其他 - 结果将取决于数据库中实际存在一些匹配。由于没有匹配,它不会返回任何值,甚至不会返回默认计数0.考虑

MATCH (a)
RETURN "a"

如果没有比赛,你会期望" a"要退回?如果没有,那么用

MATCH (a) 
RETURN COUNT(a), "a" 

如果你希望{(1)}在(a)没有匹配时为0,那么你必须返回" a"。但这会令人困惑,不是吗?

通过将匹配模式设为可选,您可以让查询到达'伯爵和文字。要返回COUNT(a)

0, a

顺便说一句,你的第二个查询为我返回一行值为0的行,与第一个查询相同。