SQL 在时间戳上连接两个不同的表

SQL join two different tables on timestamp

请原谅格式不佳,我会尽量保持清楚:

Table一个

 |---------------------|------------------|--------------|
 |      col1           |     col2         |   datetime   |
 |---------------------|------------------|--------------|

Table B

 |---------------------|------------------|--------------|
 |      col3           |     col4         |   datetime   |
 |---------------------|------------------|--------------|

我正在寻找的输出是这样的

 |---------------------|------------------|--------------|-----------|---------------|
 |      col1           |     col2         |   col3       |   col4    |   datetime    |             
 |---------------------|------------------|--------------|-----------|---------------|

基本上,日期时间列应该是键并且应该包含两个表中的所有值(没有重复项),并且在表中找到的相应值应该出现在每个时间戳(或 NULL 时有 none )

我试过使用 FULL OUTER JOIN,但它似乎跳过了一些日期时间:

SELECT T1.col1, T1.col2, T2.col3, T2.col4, T1.datetime
FROM T1 FULL OUTER JOIN  T2 on T1.datetime=T2.datetime;

我也试过在右连接子查询上使用左连接,但还是不行。

我觉得这应该有一个简单的解决方案。我错过了什么吗?

谢谢!

很可能,它不是“跳过”日期时间值。相反,它们显示为 NULL。您可以使用 coalesce():

来解决这个问题
SELECT T1.col1, T1.col2, T2.col3, T2.col4,
       COALESCE(T1.datetime, T2.datetime) as datetime
FROM T1 FULL OUTER JOIN
     T2 
     ON T1.datetime = T2.datetime;

大多数支持 FULL JOIN 的数据库也支持标准的 USING 子句,因此您也可以将其表示为:

SELECT T1.col1, T1.col2, T2.col3, T2.col4,
       datetime
FROM T1 FULL OUTER JOIN
     T2 
     USING (datetime);