nebula icon indicating copy to clipboard operation
nebula copied to clipboard

optional match question

Open AntarcticPresident opened this issue 1 year ago • 5 comments

match p=(v2:bbbbb{ip:"11.11.11.11"})-[*]->(v3:ccccc{ip:"11.11.11.11"})-[]->(v4:ddddd) 
optional match (v1:aaaaa)-[]->(v2) return p


match p=(v1:aaaaa)-[]->(v2:bbbbb{ip:"11.11.11.11"})-[*]->(v3:ccccc{ip:"11.11.11.11"})-[]->(v4:ddddd) return p


这两句sql实现的功能是一样的。但是我用了optional match,返回的结果就没有aaaaa这部分了。不使用optional match,aaaaa就能搜到,这是为什么?

AntarcticPresident avatar Aug 19 '24 12:08 AntarcticPresident

It seems you didn't return the optional matched pattern at all, see this one instead(with p1 being returned)

因为前边 的 p 定义的只有 第一个 match 吧


match p=(v2:bbbbb{ip:"11.11.11.11"})-[*]->(v3:ccccc{ip:"11.11.11.11"})-[]->(v4:ddddd) 
optional p1=match (v1:aaaaa)-[]->(v2) return p,p1

wey-gu avatar Aug 19 '24 17:08 wey-gu

image 并不行:(

AntarcticPresident avatar Aug 20 '24 02:08 AntarcticPresident

再个,这个语句我用了好久了,之前都是这么写的,好用的。

AntarcticPresident avatar Aug 20 '24 02:08 AntarcticPresident

再个,这个语句我用了好久了,之前都是这么写的,好用的。

我写错地方啦,昨天手机回复的 p1 在 pattern 前边 不是match 前边。

只 return p 的话一定只有 p 对吧

match p=(v2:bbbbb{ip:"11.11.11.11"})-[*]->(v3:ccccc{ip:"11.11.11.11"})-[]->(v4:ddddd) 
optional match p1=(v1:aaaaa)-[]->(v2) return p,p1

wey-gu avatar Aug 20 '24 05:08 wey-gu

你说的确实有道理,实际上这么写也确实解决问题了。 不过,之前我真是那么写的,还是还用的。 话说,老哥你是在美国还是上海?北京时间凌晨2点看留言,你也是够拼的

AntarcticPresident avatar Aug 20 '24 05:08 AntarcticPresident