【发布时间】:2021-06-01 13:22:00
【问题描述】:
我对使用 SQL(在我的例子中是 Postgres)很陌生,在一个查询中加入多个表时遇到问题。我正在使用FULL OUTER JOIN 命令来解决我的问题,但是当表 2 和表 3 共享相同的时间时,它们不会组合在一行中,而是创建具有相同时间戳的两行。
我有三个表,每个表都有一个时间和一个数据列:
time | data1
12:01 5
12:04 7
12:06 6
time | data2
12:02 3
12:03 4
12:05 9
time | data3
12:01 5
12:04 7
12:05 9
我想要的输出是这样的:
time | data1 | data2 | data3
12:01 5 NaN 5
12:02 NaN 3 NaN
12:03 NaN 4 NaN
12:04 7 NaN 7
12:05 NaN 9 9
12:06 6 NaN NaN
这是我目前得到的,注意一些时间戳是如何加倍的,因为没有检查data2.time=data3.time,只有data1.time=data2.time和data1.time=data3.time
time | data1 | data2 | data3
12:01 5 NaN 5
12:02 NaN 3 NaN
12:03 NaN 4 NaN
12:04 7 NaN 7
12:05 NaN 9 NaN
12:05 NaN NaN 9
12:06 6 NaN NaN
请特别注意,在某些情况下,表 1 和表 2 共享相同的时间,而我想合并行,而在某些情况下,表 2 和表 3 的时间相同,在这种情况下,我也想合并行。
但是我需要在一个查询中进行加入,那么如何将ON table1.time=table2.time 中的这些案例与table2.time=table3.time 结合起来
【问题讨论】:
-
使用
FULL OUTER JOIN。 -
这就是我正在使用的,但是当组合几个连接时,我看不到如何组合不同表的时间 = 时间检查......很难描述我想要做什么说
标签: sql postgresql join