neo4j - 如何使用将 'order by' DESC 中的空值推到底部?
neo4j - How to use push null values in 'order by' DESC to the bottom?
我有一堆带有 属性 "updated" 的项目,它告诉我项目何时更新。但是一堆时间戳是空的。所以当我这样做时:
MATCH (item) return item ORDER BY item.updated DESC
,所有那些带空值的都在顶部返回。
我也尝试了 COALESCE
,这似乎在 v2.2 中有效,但在 v2.1.6 中无效:
MATCH (item) return item ORDER BY COALESCE(product.updated?,"0") DESC
在 v2.1.6 中,我得到:
此语法不再受支持(缺少的属性现在返回为 null)。如果您确实需要旧行为,请使用 (not(has(.updated)) OR .updated=)。
是否有任何替代解决方案可以不受 neo4j 版本的影响?
你试过CASE语句吗?
MATCH (item:Item)
RETURN CASE WHEN HAS(item.updated) THEN item.updated ELSE 0 END AS updated
ORDER BY updated DESC
我发现在 Neo4j 3.1.3 上,我可以结合使用 ASC
排序和厚颜无耻的 -
字符来实现此目的:
MATCH (item:Item)
RETURN item
ORDER BY -item.updated ASC
这是受 Neo4j 文档中有关 null
和排序的信息的启发:https://neo4j.com/docs/developer-manual/current/cypher/clauses/order-by/#order-null
我有一堆带有 属性 "updated" 的项目,它告诉我项目何时更新。但是一堆时间戳是空的。所以当我这样做时:
MATCH (item) return item ORDER BY item.updated DESC
,所有那些带空值的都在顶部返回。
我也尝试了 COALESCE
,这似乎在 v2.2 中有效,但在 v2.1.6 中无效:
MATCH (item) return item ORDER BY COALESCE(product.updated?,"0") DESC
在 v2.1.6 中,我得到:
此语法不再受支持(缺少的属性现在返回为 null)。如果您确实需要旧行为,请使用 (not(has(.updated)) OR .updated=)。
是否有任何替代解决方案可以不受 neo4j 版本的影响?
你试过CASE语句吗?
MATCH (item:Item)
RETURN CASE WHEN HAS(item.updated) THEN item.updated ELSE 0 END AS updated
ORDER BY updated DESC
我发现在 Neo4j 3.1.3 上,我可以结合使用 ASC
排序和厚颜无耻的 -
字符来实现此目的:
MATCH (item:Item)
RETURN item
ORDER BY -item.updated ASC
这是受 Neo4j 文档中有关 null
和排序的信息的启发:https://neo4j.com/docs/developer-manual/current/cypher/clauses/order-by/#order-null