基于公共列将两张表合并为一张表
Posted
技术标签:
【中文标题】基于公共列将两张表合并为一张表【英文标题】:Combine two tables into one table based on a common columne 【发布时间】:2016-08-25 19:03:27 【问题描述】:如果我有列名为 time
、value1
的表 A 以及列名为 time
、value2
的表 B。如何使用 sql server 将这两个表合并为一个表,其中包含 time
、value1
、value2
列?
表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
【讨论】:
以上是关于基于公共列将两张表合并为一张表的主要内容,如果未能解决你的问题,请参考以下文章