0

我密码查询是初学者。我要查询如下

数据插入

CREATE ( USER{ talk_id : 1 , phone_num : "1" } );  //[1]
CREATE ( USER{ talk_id : 2 , phone_num : "2" } );  //[2]
CREATE ( USER{ talk_id : 3 , phone_num : "3" } );  //[3]
CREATE ( USER{ talk_id : 4 , phone_num : "4" } );  //[4]


CREATE ( USER{ talk_id : 5 , phone_num : "5" } ); //[5]
CREATE ( USER{ talk_id : 6 , phone_num : "6" } ); //[6]
CREATE ( USER{ talk_id : 7 , phone_num : "7" } ); //[7]

START s=node(1) , d=node(2) CREATE s-[r:FRIEND]->d RETURN r;
START s=node(1) , d=node(3) CREATE s-[r:FRIEND]->d RETURN r;
START s=node(1) , d=node(4) CREATE s-[r:FRIEND]->d RETURN r;

START s=node(2) , d=node(7) CREATE s-[r:FRIEND]->d RETURN r;

查询

查询 1:

START s=node(1) match s-[r]->f return f;

结果:

+----------------------------------+
| f                                |
+----------------------------------+
| Node[2]{talk_id:2,phone_num:"2"} |
| Node[3]{talk_id:3,phone_num:"3"} |
| Node[4]{talk_id:4,phone_num:"4"} |
+----------------------------------+

查询 2

start s = node( 2, 3 , 4 ) , s1 = node( 2 , 3 , 4 ) match p=s-[r]->s1 return s1;

我想要 s 和交集 s1 的关系节点;

结果:

+----------------------------------+
| s                                | 
+----------------------------------+
| Node[3]{talk_id:3,phone_num:"3"} |
+----------------------------------+
1 row

我想将两者合并为一个查询和结果

前任 )

+----------------------------------+
| f                                |
+----------------------------------+
| Node[2]{talk_id:2,phone_num:"2"} |
| Node[3]{talk_id:3,phone_num:"3"} |
| Node[4]{talk_id:4,phone_num:"4"} |
| Node[3]{talk_id:3,phone_num:"3"} |
+----------------------------------+

我该怎么办,但是?RDBMS 就像子查询一样

坦克你^^;

4

1 回答 1

1

不确定我是否正确理解了您的问题。基于此,我可以猜出您要求的两种情况

1)您想使用第一个查询的结果作为第二个查询的起点,并将其组合成一个查询:

start s=node(1)
match s-[r1]->()-[r2]->f
return f

注意 a path,后面的表达式match可能有任意长度。

您还可以使用拆分它并链接子查询with

start s=node(1)
match s-[r1]->t
with t
match t-[r2]->f
return f

2)您想将两个不同查询的结果组合成一个结果集。在这种情况下,您必须使用UNIONNeo4j 2.0 中引入的关键字或在客户端执行此操作。

于 2013-09-01T14:43:18.120 回答