我有一个包含名为links的LINKMAP字段的类。递归地使用此类来创建任意层次分组(类似于时间序列示例,但不是固定的年/月/日结构)。
像这样的查询:
select expand(links['2017'].links['07'].links['15'].links['10'].links) from data where key='AAA'
返回"链接"的最后一层中包含的实际记录。这完全符合预期。
但是像这样的查询(请注意&#34的第二层到第二层的10,11;链接")
select expand(links['2017'].links['07'].links['15'].links['10','11'].links) from data where key='AAA'
返回"链接"的最后一层的两行。代替:
{" 1000":"#23:0"" 1001":"#24:0"" 1002":"#23:1"} {" 1003":"#24:1"" 1004":"#23:2"}
使用unionAll或intersect(带或不带UNWIND)会产生这条记录:
[{" 1000":"#23:0"" 1001":"#24:0"&#34 ; 1002":"#23:1"},{" 1003":"#24:1"" 1004&#34 ;: "#23:2"}]
但我没有尝试过(包括对#34;复合" SELECTs的各种尝试)将使扩展工作与原始示例一样(即返回上一个LINKMAP中表示的实际记录) )。
是否有可以实现此目的的SQL语法?
注意:即使ODB文档中的这个(略微修改过的)示例也不会产生链接记录列表:
select expand(records) from
(select unionAll(years['2017'].links['07'].links['15'].links['10'].links, years['2017'].links['07'].links['15'].links['11'].links) as records from data where key='AAA')
答案 0 :(得分:0)
我不确定你想要达到什么目标,但我认为值得尝试使用values()
:
select expand(links['2017'].links['07'].links['15'].links['10','11'].links.values()) from data where key='AAA'