合并不同表的输出
Merge output of different tables
我有两个表 t1
和 t2
。我需要合并他们的输出
t1
day_hour | col1
----------+------
09 AM | 1
10 AM | 3
11 AM | 0
12 PM | 4
t2
day_hour | col2
----------+------
08 AM | 11
11 AM | 7
12 PM | 7
01 PM | 6
02 PM | 4
输出应该是
day_hour | col1 | col2
----------+---------+--------
08 AM | NULL | 11
09 AM | 1 | NULL
10 AM | 3 | NULL
11 AM | 0 | 7
12 PM | 4 | 7
01 PM | NULL | 6
02 PM | NULL | 4
到目前为止,我已经尝试了 FULL OUTER JOIN
,但这并没有给我合并的 day_hour
这是我的查询
SELECT t1.day_hour, t1.col1, t2.col2
FROM (SELECT day_hour, col1 FROM t1)
FULL OUTER JOIN
(SELECT day_hour, col1 FROM t2)
ON t1.day_hour = t2.day_hour;
我正在使用 postgres 11
您可以使用 COALESCE()
:
SELECT COALESCE(t1.day_hour, t2.day_hour) day_hour, t1.col1, t2.col2
FROM t1
FULL OUTER JOIN t2 ON t1.day_hour = t2.day_hour;
但是在 Postgres 中,USING
join 子句可以派上用场:
SELECT day_hour, t1.col1, t2.col2
FROM t1
FULL OUTER JOIN t2 USING(day_hour)
请注意子查询是不必要的 - 我删除了它们。
你可以使用 UNION
select t.day_hour , t1.col1, t2.col2
from (
select day_hour
from t1
union
select day_hour
from t2
) t1
left join t1 on t1.day_hour = t.day_hour
left join t2 on t2.day_hour = t.day_hour
我想你想从两个表中合并 day_hour。
select
coalesce(t1.day_hour,t2.day_hour),
t1.col1,
t2.col1,
...
我有两个表 t1
和 t2
。我需要合并他们的输出
t1
day_hour | col1
----------+------
09 AM | 1
10 AM | 3
11 AM | 0
12 PM | 4
t2
day_hour | col2
----------+------
08 AM | 11
11 AM | 7
12 PM | 7
01 PM | 6
02 PM | 4
输出应该是
day_hour | col1 | col2
----------+---------+--------
08 AM | NULL | 11
09 AM | 1 | NULL
10 AM | 3 | NULL
11 AM | 0 | 7
12 PM | 4 | 7
01 PM | NULL | 6
02 PM | NULL | 4
到目前为止,我已经尝试了 FULL OUTER JOIN
,但这并没有给我合并的 day_hour
这是我的查询
SELECT t1.day_hour, t1.col1, t2.col2
FROM (SELECT day_hour, col1 FROM t1)
FULL OUTER JOIN
(SELECT day_hour, col1 FROM t2)
ON t1.day_hour = t2.day_hour;
我正在使用 postgres 11
您可以使用 COALESCE()
:
SELECT COALESCE(t1.day_hour, t2.day_hour) day_hour, t1.col1, t2.col2
FROM t1
FULL OUTER JOIN t2 ON t1.day_hour = t2.day_hour;
但是在 Postgres 中,USING
join 子句可以派上用场:
SELECT day_hour, t1.col1, t2.col2
FROM t1
FULL OUTER JOIN t2 USING(day_hour)
请注意子查询是不必要的 - 我删除了它们。
你可以使用 UNION
select t.day_hour , t1.col1, t2.col2
from (
select day_hour
from t1
union
select day_hour
from t2
) t1
left join t1 on t1.day_hour = t.day_hour
left join t2 on t2.day_hour = t.day_hour
我想你想从两个表中合并 day_hour。
select
coalesce(t1.day_hour,t2.day_hour),
t1.col1,
t2.col1,
...