UNION ALL 可以将两个 RETURN 子句中的同名返回值进行首尾拼接。由于其不对拼接后的结果进行去重,因而效率高于 UNION 子句。
语法:
... return <expression1_A>
as <alias_A>
, <expression1_B>
as <alias_B>
, ...
union
... return <expression2_A>
as <alias_A>
, <expression2_B>
as <alias_B>
, ...
参数:
- <expression1>:第一个 UQL 语句的返回值
- <expression2>:第二个 UQL 语句的返回值,需要和第一个 UQL 语句的返回值数量一致,别名相同的返回值的数据结构必须一致
- <alias>:返回值的别名(顺序可打乱),同名的返回值将被拼接
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
上面 UQL 代码中的两个 RETURN 子句各组装了异源返回值 a 和 b,它们处于同行内的数据被联合,但没有去重:
一般用法
示例:查找向银行卡 CA029 转账且金额高于 1000 的银行卡,再查找向银行卡 CA022 转账且金额高于 3000 的银行卡,返回这些银行卡
n({_id == "CA029"}).le({@transfer.amount > 1000}).n({@card} as n) return n
union all
n({_id == "CA022"}).le({@transfer.amount > 3000}).n({@card} as n) return n