我的SQLite数据库中有大约8个表,每个表都有一个名为time
的字段,这是在表中插入数据的时间。
我想在此time
列上执行JOIN,以便按time
在所有表中升序排序数据。如果这个时间在另一个表中完全匹配,那么该记录应该显示在同一行上,否则为空。
答案 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