2016-10-04 59 views
0

私はNeo4Jを新しくしています。私が持っている データは次のようになります。Neo4j Cypherは、並べ替えを含む簡単なクエリから重複を削除します

(a)-[:likes]->(b) 
(a)-[:likes]->(c) 

今、私は他の誰かを好きでみんなと一緒にリストを抽出したいと思います。

はこれが私の(a)の重複を与える

match (u)-[:likes]->(p) return u order by p.id desc; 

をしようとしました。これは、 '未定義の変数P' を私に与え

match (u)-[:likes]->(p) return distinct u order by p.id desc; 

: 私は明確な使用してみました。

私が注文を落とすと、独特の作品が私に(a)を一度与えることを知っています。

しかし、私はどのようにして別個の注文を同時に行うことができますか?

を明瞭なければ、あなたはUとPの各ペアを持つ行を持っている:

答えて

1

はあなたのクエリが動作していない理由を考えてみましょう。 DISTINCTを使うと、複数のpにマッチする同じuに対して複数の行があるときに、どのように順序付けするのですか?それは不可能な仕事です。

代わりにu.idで注文するように変更すると、正常に動作します。

ラベルを使用して、関連するノードにのみクエリを制限することをお勧めします。また、照会を再作成して重複を排除し、DISTINCTの必要性を完全に回避することもできます。

私たちは、あなたが興味を持っているノードがで標識されていると仮定した場合:人、クエリは次のようになります。

MATCH (p:Person) 
WHERE EXISTS((p)-[:likes]-()) 
RETURN p ORDER BY p.id DESC 
関連する問題