neo4j 如何有条件地使用 where
neo4j how to use where conditionally
我有以下查询:
MATCH (u: User {id: '...'})-[r:EXECUTING]->(journey: Journey)
WHERE r.progress > 0 AND r.progress < 100
RETURN journey;
如果关系的 progress
属性 介于 1 和 100 之间,它会加载附加到用户 :EXECUTING
的所有旅程。
现在我想为 AND
后面的部分添加一个条件 --> 所以 WHERE
应该只是 r.progress > 0
(没有 AND
.. .).
我看到有 CASE
/WHEN
/THEN
但认为必须有更快的解决方案?
示例“如果某个变量为假,where 应该检查 r.progress 在 0 到 50 之间。如果变量为真,它应该检查 r.progress 在 0 到 100 之间”
提前致谢!
根据您的描述
Example "The where should check r.progress to be between 0 and 50 if a certain variable is false. If the variable is true, it should check r.progress to be between 0 and 100"
我会编写以下 WHERE
子句:
WHERE (
(variable = FALSE AND (r.progress > 0 AND r.progress < 50 ))
OR
(variable = TRUE AND (r.progress > 0 AND r.progress < 100 ))
)
但不确定它是否比 CASE/WHEN 更快。
我有以下查询:
MATCH (u: User {id: '...'})-[r:EXECUTING]->(journey: Journey)
WHERE r.progress > 0 AND r.progress < 100
RETURN journey;
如果关系的 progress
属性 介于 1 和 100 之间,它会加载附加到用户 :EXECUTING
的所有旅程。
现在我想为 AND
后面的部分添加一个条件 --> 所以 WHERE
应该只是 r.progress > 0
(没有 AND
.. .).
我看到有 CASE
/WHEN
/THEN
但认为必须有更快的解决方案?
示例“如果某个变量为假,where 应该检查 r.progress 在 0 到 50 之间。如果变量为真,它应该检查 r.progress 在 0 到 100 之间”
提前致谢!
根据您的描述
Example "The where should check r.progress to be between 0 and 50 if a certain variable is false. If the variable is true, it should check r.progress to be between 0 and 100"
我会编写以下 WHERE
子句:
WHERE (
(variable = FALSE AND (r.progress > 0 AND r.progress < 50 ))
OR
(variable = TRUE AND (r.progress > 0 AND r.progress < 100 ))
)
但不确定它是否比 CASE/WHEN 更快。