不好意思的格式,我会尽量保持清楚:
表A
|---------------------|------------------|--------------|
| col1 | col2 | datetime |
|---------------------|------------------|--------------|
表B
|---------------------|------------------|--------------|
| col3 | col4 | datetime |
|---------------------|------------------|--------------|
我正在寻找的输出是这样的
|---------------------|------------------|--------------|-----------|---------------|
| col1 | col2 | col3 | col4 | datetime |
|---------------------|------------------|--------------|-----------|---------------|
基本上,datetime列应该是键,并且应包含两个表中的所有值(无重复),并且在表中找到的各个值应针对每个时间戳出现(如果没有,则为NULL)
我尝试了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
支持的数据库也支持standardUSING
子句,因此您也可以将其表示为:
SELECT T1.col1, T1.col2, T2.col3, T2.col4,
datetime
FROM T1 FULL OUTER JOIN
T2
USING (datetime);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句