对于空数据库,match (n) return count(n);
按预期返回值为0的一行,但match (n) return count(n) as count;
返回零行,match (n) return count(n),1;
也是如此。在结果中是否有别名或其他列,是否有某种方法可以使return
对待count(n)
相同?
答案 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的行,与第一个查询相同。