在Postgres中,我有两个几乎没有任何共同点的不同表格,除了它们都有一个创建日期。我想使用该创建日期来在时间轴上显示这两个模型的实例。为此,我想首先以某种方式从这两个表中选择所有的created_at时间戳,并按降序排序,对结果进行分页,然后检测每一行对应的模型以正确显示数据。您觉得这可能吗?
的东西
。select created_at, 'a' as tab_name from table_a
union all
select created_at, 'b' as tab_name from table_b
order by created_at
table_a
和 table_b
具有兼容的列时,此方法才能奏效,但这似乎不是本例的情况。 - Craig Ringertable_a.*
和 table_b.*
。不知怎么回事。 - Craig Ringer
select coalesce(a.creation_date, b.creation_date) from table_a a full outer join table_b b on a.creation_date = b.creation_date order by 1
。 - user330315UNION ALL
和一个时间戳的公共列,所有其他列在另一个表中被替换为NULL文字。因此,如果每个表有三个列,您将拥有SELECT * FROM (SELECT a.thetime AS thetime, a.aa AS aa, a.ab AS ab, a.ac AS ac, NULL AS bx, NULL AS by, NULL AS bz FROM a UNION ALL SELECT b.thetimecol, NULL, NULL, NULL, b.x, b.y, b.z) combined ORDER BY combined.thetime
。这本质上是一个粗略自制的FULL OUTER JOIN
;但是,与FULL OUTER JOIN
不同的是,它不会合并时间戳相等的行。 - Craig Ringer