【问题标题】:Extract results from different ResultSets order by data按数据顺序从不同的 ResultSets 中提取结果
【发布时间】:2017-05-10 13:34:35
【问题描述】:

我有 4 个 ResultSet 由 4 个不同的查询获得。 我会创建一个 JSON 对象,其中包含这些不同 ResultSets 的属性,这些 ResultSets 由具有 Datetime 类型的每个记录的参数排序。

假设这种情况:

ResultSet rs1 = from query ("select a, date from table order by date");
ResultSet rs2 = from query ("select b, c, date from table1 order by date");
ResultSet rs3 = from query ("select d, e, f, date from table2 order by date");
ResultSet rs4 = from query ("select g, h, i, l, date from table3 order by date");

正如您在上面看到的,结果集具有不同的提取字段、不同数量的提取字段等。唯一的常见信息是字段“数据”,它作为最后一个字段出现在所有 ResultSed 中(查询的最后索引)。

然后我会获得这样的 JSON: 请注意,具有次要索引的对象是最新的,具有最后索引的对象是最旧的考虑“数据”字段

{"numberObjects":5,
a1:"valuea1",
data1:"valueDataa1",
d2:"valued2",
e2:"valuee2",
f2:"valuef2",
...}

有办法做这件事吗?我知道的唯一程序非常费力,所以我问你是否知道 oyu 是否知道一种更快、更容易启动这个东西的方法。谢谢大家。

【问题讨论】:

  • 这对我来说并不完全清楚。也许您想给出一个结果集中的数据和 JSON 中所需数据的小例子?如果规范是明确的,我相信它可以做到。
  • 您自己尝试过吗?做研究吗?
  • 如果我理解正确,您只需要每个结果集中最旧和/或最新的行,我们可以修改 SQL 以仅返回所需的行吗?

标签: java sql json sqlite


【解决方案1】:

您可以使用复合查询一次对所有内容进行排序;这要求组件查询返回相同数量的列:

SELECT a, NULL, NULL, NULL, date FROM tab1
UNION ALL
SELECT b, c, d, e, date FROM tab2
UNION ALL
SELECT ...
ORDER BY date;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 2014-03-14
    • 2011-03-22
    相关资源
    最近更新 更多