UNION ALL concatène les valeurs de retour ayant le même alias de deux RETURN de bout en bout et unit les données de chaque valeur de retour dans la même ligne en tant que ligne intégrée. Il a une efficacité opérationnelle plus élevée que celle de UNION puisqu'aucune déduplication n'est effectuée contre les lignes unies.
Syntaxe :
... RETURN <expression1_A>
as <alias_A>
, <expression1_B>
as <alias_B>
, ...
UNION ALL
... RETURN <expression2_A>
as <alias_A>
, <expression2_B>
as <alias_B>
, ...
Entrée :
- <expression1> : Valeurs de retour du 1er RETURN
- <expression2> : Valeurs de retour du 2ème RETURN, doit avoir le même nombre de valeurs de retour que le 1er RETURN et la même structure de données pour chaque alias identique
- <alias> : L'alias de la valeur de retour (ordre différent autorisé)
Par exemple, concaténer les valeurs de retour hétérologues a et b :
uncollect [1,2,3]) as a
uncollect [3,4,5]) as b
return a, b
union all
uncollect [1,2]) as a
uncollect [3,5]) as b
return a, b
Graphique d'exemple : (à utiliser pour les exemples suivants)
Exécutez les UQLs ci-dessous un par un dans un graphset vide pour créer des données graphiques :create().node_schema("student").node_schema("course")
create().node_property(@*, "name").node_property(@student, "age", int32).node_property(@course, "credit", int32)
insert().into(@student).nodes([{_id:"S001", _uuid:1, name:"Jason", age:25}, {_id:"S002", _uuid:2, name:"Lina", age:23}, {_id:"S003", _uuid:3, name:"Eric", age:24}, {_id:"S004", _uuid:4, name:"Emma", age:26}, {_id:"S005", _uuid:5, name:"Pepe", age:24}])
insert().into(@course).nodes([{_id:"C001", _uuid:6, name:"French", credit:4}, {_id:"C002", _uuid:7, name:"Math", credit:5}])
insert().into(@default).edges([{_uuid:1, _from_uuid:1, _to_uuid:6}, {_uuid:2, _from_uuid:2, _to_uuid:6}, {_uuid:3, _from_uuid:3, _to_uuid:6}, {_uuid:4, _from_uuid:2, _to_uuid:7}, {_uuid:5, _from_uuid:3, _to_uuid:7}, {_uuid:6, _from_uuid:4, _to_uuid:7}, {_uuid:7, _from_uuid:5, _to_uuid:7}])
Utilisation Courante
Exemple : Trouver les étudiants pas plus âgés que 24 ans qui choisissent le Français, et aussi trouver les étudiants pas plus jeunes que 24 ans qui choisissent les Mathématiques, retourner ces étudiants
n({@course.name == "French"}).e().n({@student.age <= 24} as n) return n.name
union all
n({@course.name == "Math"}).e().n({@student.age >= 24} as n) return n.name
Lina
Eric
Pepe
Eric
Emma