基于公共列将两张表合并为一张表

Posted

技术标签:

【中文标题】基于公共列将两张表合并为一张表【英文标题】:Combine two tables into one table based on a common columne 【发布时间】:2016-08-25 19:03:27 【问题描述】:

如果我有列名为 timevalue1 的表 A 以及列名为 timevalue2 的表 B。如何使用 sql server 将这两个表合并为一个表,其中包含 timevalue1value2 列?

表A:时间,值1

表 B:时间,值2

输出:

时间,值1,值2

【问题讨论】:

【参考方案1】:

你需要的是经典的JOIN:

SELECT t1.time, t1.value1, t2.value2 
FROM Table1 t1  
LEFT JOIN Table2 t2 ON t1.time=t2.time

PS!在某些数据库中,LEFT JOIN 被称为LEFT OUTER JOIN

【讨论】:

为了 ANSI-92 兼容性,使用可选的 OUTER 标识符走老路。星期四的回归完全有效。 如果时间不同怎么办?如果没有时间匹配,我想输入空值。 @Mat 如果没有匹配的时间-table1 上的时间但在table2 上没有匹配,您将得到以下结果:t1.time,t1.value,NULL【参考方案2】:
SELECT A.time, A.value1, A.value2 
FROM Table1 A  
INNER JOIN Table2 B ON A.time=B.time

【讨论】:

请编辑更多信息。不建议使用纯代码和“试试这个”的答案,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。【参考方案3】:

一个有趣的方法是:-

SELECT time, value1, '' as value2
from A

UNION ALL

SELECT time, '' as value1, value2
FROM B

【讨论】:

以上是关于基于公共列将两张表合并为一张表的主要内容,如果未能解决你的问题,请参考以下文章

hive sql 将两张表连接成为第三张表

MYSQL 将两张表整合在一张表中,不会遗漏任何一行

数据库将两张表进行横向连接(拼接成一张表的形式显示)

TensorBoard:将两张图合并为一张图

SQL关联两张表查数据,结果只显示一条。

SQL关联两张表查数据,结果只显示一条。