我的 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/