V4.1
格式、参数
UNION 可以将两个 UQL 语句的返回值首尾拼接,并对新产生的返回值按行去重。最终得到的数据流的长度小于等于原先两个流的长度的和。
语法:
- 格式:
... return<columnA1>
as<alias1>
,<columnA2>
as<alias2>
, ...
union
... return<columnB1>
as<alias1>
,<columnB2>
as<alias2>
, ... - 参数:(见下表)
- 受影响列:
<columnA>
、<columnB>
名称 | 类型 | 规范 | 描述 |
---|---|---|---|
<columnA> |
NODE,EDGE,PATH,ATTR,ARRAY,TABLE | / | 第一个 UQL 语句的返回值 |
<columnB> |
NODE,EDGE,PATH,ATTR,ARRAY,TABLE | / | 第二个 UQL 语句的返回值,需要和第一个 UQL 语句的返回值数量一致、别名一致、别名相同的返回值类型一致 |
<alias> |
string | 同自定义别名的命名规范 | 返回值的别名,两个 UQL 语句的返回值别名必须一致,顺序无需对应 |
详解
find().nodes([3,4,5]) as n1
return n1 as a1, n1.color as a2
union
find().nodes([4,7]) as n1
return n1 as a1, n1.color as a2
上面 UQL 代码中的两个 UQL 语句中各有一个 NODE、ATTR 两列返回值,通过子句 UNION 进行拼接、去重:
一般用法
示例:查找向银行卡 CA029 转账且金额高于 1000 的银行卡,再查找向银行卡 CA022 转账且金额高于 3000 的银行卡,返回这些银行卡并去重
n({_id == "CA029"}).le({@transfer.amount > 1000}).n({@card} as n) return n
union
n({_id == "CA022"}).le({@transfer.amount > 3000}).n({@card} as n) return n