android - SQLite 跨表跨列排序

标签 android sorting join sqlite android-sqlite

我的 SQLite 数据库中有大约 8 个表,每个表都有一个名为 time 的字段,这是将数据插入表中的时间。

我想在此 time 列上执行 JOIN,以便数据在所有表中按 time 升序排序。如果在另一个表中有与该时间完全匹配的记录,则该记录应显示在同一行,否则为空。

最佳答案

有可能implement full outer joins with compound queries , 但对于八张表,这会变得相当复杂。

假设 time 值是唯一的,可以连接所有表,同时对来自其他表的列使用 NULL,然后使用 GROUP BY 为每个时间戳获取一个输出行,并使用 MAX() 之类的东西来挑选非 NULL 值:

SELECT time, MAX(Name1), MAX(Name2), MAX(Name3), ...
FROM (SELECT time, Name1, NULL AS Name2, NULL AS Name3, ... FROM Table1
      UNION ALL
      SELECT time, NULL,  Name2,         NULL,          ... FROM Table2
      UNION ALL
      SELECT time, NULL,  NULL,          Name3,         ... FROM Table3
      ...)
GROUP BY time
ORDER BY time

关于android - SQLite 跨表跨列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26878848/

相关文章:

java - Mojo 执行异常 : Maven with Android

Android,带有嵌入式对象列表的ROOM查询

c++ - 错误 : passing 'const T' as 'this' argument of 'bool T::operator<(T)' discards qualifiers

Javascript 对象排序仅有时有效

MySQL SELECT + LEFT JOIN + IF 查询

java - (Spark skewed join) 如何在没有内存问题的情况下连接两个具有高度重复键的大型 Spark RDD?

具有多个连接、计数和左连接的 SQL 到 LINQ

android - 如何重复 fragment (如循环)?

android - 不受信任的 SSL 证书 - 自定义 keystore 问题

javascript - 如何对包含带 $ 符号的十进制值的 DataTable 列进行排序 - JQuery DataTable