ganninu93
ganninu93

Reputation: 1601

How can duplicate results in a different order be removed in a Cypher response?

I am trying to find all the videos which 2 people commonly liked using the following cypher query

MATCH (p1: person)-[:LIKED]->(v)<-[:LIKED]-(p2: person)
return p1, p2, v

In the output each entry is listed twice, with the values of p1 and p2 being switched. Example:

BOB | Mary | Cat video
Mary| Bob  | Cat video

How can such duplicate entries combined into one?

Upvotes: 1

Views: 200

Answers (1)

cybersam
cybersam

Reputation: 67019

Here is one way to prevent duplicate results:

MATCH (p1: person)-[:LIKED]->(v)<-[:LIKED]-(p2: person)
WHERE ID(p1) < ID(p2)
RETURN p1, p2, v;

This works by requiring p1 to have a lower native ID than p2.

Upvotes: 3

Related Questions