ORDER BY
不能根据关系或者节点进行排序,只能根据属性!一般order by
都是放在return
后面,用于对结果进行排序。
MATCH (n)
RETURN n.name, n.age
ORDER BY n.age, n.name
SKIP
SKIP用于跳过指定行数RETURN、WITH的结果。一般在Order by 的后面,如果没有order by 就放在return后面:
# 从头开始计数进行跳过
MATCH (n)
RETURN n.name
ORDER BY n.name
SKIP toInteger(3*rand())+ 1
# //跳过指定数量的结果,然后返回结果的子集,跳过前三个人,从第四个人开始返回其姓名
MATCH (n:人物)
RETURN n.姓名
SKIP 3
LIMIT
LIMIT用于保留指定行数RETURN、WITH的结果。limit 一般是在最后,控制展示的个数:
# 从头部开始返回结果
MATCH (n)
RETURN n.name
ORDER BY n.name
LIMIT 3
FOREACH
FOREACH用于遍历并操作集合元素。
# //此查询未返回任何内容,但设置了五个节点的属性
MATCH (n:人物)
WITH n limit 5
WITH collect(n) as list
FOREACH (n IN list | SET n.出生年份 = "1979")
# 可以批量的进行修改属性
match p=(begin)-[*]->(END)
where begin.name = 'A' And END.name = 'D'
foreach(n in nodes(p)| set n.marked = TRUE)
CALL
CALL 语句用于调用数据库中的内置过程(Procedure),内置过程类似于关系型数据库中的存储过程,是一组完成特定功能的方法。但这一部分一般用到的应当不多。
1)调用数据库内置过程查询数据库中所有的点类型
示例如下:
# 返回类型示例
CALL db.labels()
# 也可以使用命名空间和名字调用过程,示例如下
CALL `db`.`labels`
2)调用内置过程并将结果绑定变量或过滤
示例如下:
# 调用内置过程并将结果绑定变量
CALL db.labels() YIELD label RETURN count(type) as numTypes
# 调用内置过程并过滤结果
CALL db.labels() YIELD label
WHERE label STARTS WITH "P"
RETURN count(label) as numTypes
UNION
UNION 用于将两个或多个查询的结果合并为一个结果集,该结果集中包含所有进行合并操作的行。
合并两个查询并保留重复项
# //返回合并的结果,包括重复项
MATCH (n:Actor)
RETURN n.name AS name
UNION ALL MATCH (n:Movie)
RETURN n.title AS name
查出来的结果是:
合并两个查询并删除重复项
# //返回合并结果,没有重复项,不包含ALL,union 将删除合并结果集中的重复项
MATCH (n:Actor)
RETURN n.name AS name
UNION
MATCH (n:Movie)
RETURN n.title AS name
结果是: