SQLite跨表对列进行排序

时间:2014-11-12 03:39:02

标签: android sorting join sqlite android-sqlite

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

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

1 个答案:

答案 0 :(得分:1)

有可能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