XDH
1
请教各位大神,我在使用MATCH匹配路径时,如果RETURN多个变量,那么返回的行数会变成最多的那一列数量,也就是DISTINCT失效
如下面这条语句,如果我只RETURN V,那么因为起点是一条,加上DISTINCT,返回的就只有一条数据,如果RETURN V3则返回19条,如果两个一起返回,则V的数量也扩充到了19条,v明明只需要一条却扩充成了19条,传输数据量放大19倍,影响客户端IO速度
请问是我语句使用不到位吗,还是特性就是这样的?
本来的目的:从v开始N度查询,返回N度内子图,点边携带部分轻量级属性,类似企查查等应用,不能用GET SUBGRAPH,因为只需要返回部分属性,但是目前看来GET SUBGRAPH只能选择要么不返回属性,要么全部返回,上百条字段全部返回没有必要
MATCH (v:player) -[r1:follow]- (v2) - [r2:follow]-(v3) WHERE id(v)=="player100" RETURN DISTINCT v ,v3
如果两个一起返回,则V的数量也扩充到了19条
如果我只RETURN V,那么因为起点是一条,加上DISTINCT,返回的就只有一条数据
如果RETURN V3则返回19条
XDH
3
V1,V3合并这个学到了,感谢!
不过我举例v1,v3是想说distinct无效,我本质问题是想通过match返回路径下去重后的vertex和relations来拿到子图,类似于GET SUBGRAPH,但是因为GET SUBGRAPH只能WITH PROP拿到全部属性无法筛选字段,请问match能达到 "返回路径下去重后的vertex和relations来拿到子图"的功能吗?
1 个赞
可能理解有误。
我看下下,[v1,v3] 这些行没有出现重复。
您可以具体一下吗?哪行和哪行重复了?
XDH
5
就是distinct V1,V3的时候,我理解应该是V1和V3都是去重的结果,V1只有一个起始点,去重后不应该是1个吗,但是一起DISTINCT的话返回的是多个。是因为MATCH的到的是路径path吗,所以一行对应一个path的V1和V3,有num(v3)个path,所以展示num(v3)个v1是吗,是这个原因的话为什么只DISTINCT v1的时候展示的是一行呢,让人有点迷惑
这里的distinct是对查询结果去重(如:[v1,v2] ),不是只对v1去重。
1 个赞
system
关闭
7
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。