sql:围绕时间戳组合两个表

时间:2018-05-23 20:52:43

标签: sql timestamp

我有两个带有传感器数据的表,我想将两个表合并为一个。

表1:

Sensor1 | Timestamp
34        2018-22-05 23:23:34
25        2018-22-05 22:23:23
51        2019-22-05 12:34:56

表2:

Sensor2 | Timestamp
27        2018-22-05 23:37:33
29        2018-22-05 22:36:47
66        2019-22-05 12:34:56

我想要的结果是:

预期表:

Sensor1 | Sensor2 | Timestamp
          27        2018-22-05 23:37:33
34                  2018-22-05 23:23:34
          29        2018-22-05 22:36:47
25                  2018-22-05 22:23:23
51        66        2019-22-05 12:34:56

我们不太可能在两个表中都有相同的时间戳,但即使我们这样做,在两个传感器列中都有值也不应该是个问题。

我尝试使用UNION,UNION ALL,OUTER JOIN,但我总是最终得到两个时间戳列。

有人有想法吗?

谢谢和最诚挚的问候, 罗德里戈。

3 个答案:

答案 0 :(得分:1)

根据您使用最简单的方法执行此操作的SQL风格,可能会使用FULL OUTER JOIN,类似这样的内容;

select
    t1.Sensor1,
    t2.Sensor2,
    coalesce(t1.Timestamp, t2.Timestamp) as Timestamp
from 
    table1 t1 full outer join table2 t2 on t2.Timestamp = t1.Timestamp

答案 1 :(得分:0)

    print('The new key to decrypt the message is', newKey)
new_key(key)

答案 2 :(得分:0)

如果表中没有重复项,并且您想要合并两个表的结果,我建议聚合:

select max(sensor1) as sensor1, max(sensor2) as sensor2, timestamp
from ((select Sensor1, null as Sensor2, timestamp from t1
      ) union all
      (select null, Sensor2, timestamp
       from t2
      )
     ) t
group by timetamp
order by timestamp desc;