如何从SQLITE UNION查询中获取单个JSON对象?

时间:2019-03-14 04:33:42

标签: json sqlite union

我可以从SQLITE JSON1扩展中获得UNION结果,但是会产生两个JSON对象,即两个“ Result”对象。如何从SQLITE查询中获取单个JSON对象?

查询:

SELECT json_object('Result', 
    json_array(
        json_object('ID',
                    json_group_array(id),
                    'Data',
                    json_group_array(data)
    )
) FROM table1

UNION

SELECT json_object('Result', 
    json_array(
        json_object('timestamp',
                    json_group_array(ts),
                    'name',
                    json_group_array(name)
    )
) FROM table2;

我得到的是

{
  "Result":
  [{
      "id":[1,2,3],
      "data":[10,20,30]
  }]
}
{
  "Result":
  [{
      "timestamp":[1200,1230,1300,1330,1400],
      "name":[Ada,Bella,Candy,Dolly,Ella]
  }]
}

我希望的是

{
  "Result":
  [{
      "id":[1,2,3],
      "data":[10,20,30],
      "timestamp":[1200,1230,1300,1330,1400],
      "name":[Ada,Bella,Candy,Dolly,Ella]
  }]
}

1 个答案:

答案 0 :(得分:1)

您可以使用子查询来实现:

SELECT
    JSON_OBJECT('Result',
        JSON_ARRAY(
            JSON_OBJECT('id',
                        (SELECT JSON_GROUP_ARRAY(id) FROM table1), 
                        'data',
                        (SELECT JSON_GROUP_ARRAY(data) FROM table1),
                        'timestamp',
                        (SELECT JSON_GROUP_ARRAY(ts) FROM table2),
                        'name',
                        (SELECT JSON_GROUP_ARRAY(name) FROM table2)
            )
        )
    );