【问题标题】: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

【问题讨论】:

    标签: sql-server


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 2014-06-26
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多