我无法将以下代码更改为Neo4j中的if-else条件

时间:2019-01-09 06:17:59

标签: database neo4j cypher graph-databases

我是Neo4j的新手,试图将ScoreFT [0]与ScoreFT [1]进行比较,并在Neo4j中获得更大的值。我尝试了一次,但是没有用。我不知道在最后一个代码中使用by和Limit进行排序(返回情况)。请帮助我。

Round,Date,Team1,FT,HT,Team2
1,(Fri) 11 Aug 2017 (32),Arsenal FC,4-3,2-2,Leicester City FC
1,(Sat) 12 Aug 2017 (32),Brighton & Hove Albion FC,0-2,0-0,Manchester City FC
1,(Sat) 12 Aug 2017 (32),Chelsea FC,2-3,0-3,Burnley FC
1,(Sat) 12 Aug 2017 (32),Crystal Palace FC,0-3,0-2,Huddersfield Town AFC
1,(Sat) 12 Aug 2017 (32),Everton FC,1-0,1-0,Stoke City FC
1,(Sat) 12 Aug 2017 (32),Southampton FC,0-0,0-0,Swansea City AFC
1,(Sat) 12 Aug 2017 (32),Watford FC,3-3,2-1,Liverpool FC
1,(Sat) 12 Aug 2017 (32),West Bromwich Albion FC,1-0,1-0,AFC Bournemouth
1,(Sun) 13 Aug 2017 (32),Manchester United FC,4-0,1-0,West Ham United FC
1,(Sun) 13 Aug 2017 (32),Newcastle United FC,0-2,0-0,Tottenham Hotspur FC

导入查询

尝试if / else

1 个答案:

答案 0 :(得分:0)

CASE仅适用于单个值,但是您基于比较在此处尝试使用多个值,更糟糕的是,您试图使单个CASE输出多个变量,这是行不通的。

最好先在复合结构中(在2元素列表或映射中)获取所需的值,然后使用两个CASE为每个变量获取正确的值。像这样,替换您的RETURN:

...
WITH [t1.key, ScoreFT[0]] as t1Score, [t2.key, ScoreFT[1]] as t2Score, ScoreFT[0] > ScoreFT[1] as t1Won
RETURN CASE WHEN t1Won THEN t1Score ELSE t2Score END as s, 
       CASE WHEN t1Won THEN t2Score ELSE t1Score END as p

如果您要使用地图,则可以显式创建它,而不用使用列表:

WITH t1 {.key, score:ScoreFT[0]} as t1Score, t2 {.key, score:ScoreFT[1]} as t2Score, ...