【问题标题】:sql merge two tables in which the common fields are not completesql合并两个常用字段不完整的表
【发布时间】:2012-12-20 08:31:09
【问题描述】:

在 SQL server 2008 中,我有以下两个表

  Table_1:
C1  C2
A   TypeStringA-1
B   TypeStringA-2
C   TypeStringA-3
D   TypeStringA-4
E   TypeStringA-5

  Table_2
C1  C2
A   TypeStringB-1
B   TypeStringB-2
D   TypeStringB-3
E   TypeStringB-4

我想显示以下数据:

  Result
A  TypeStringA-1 TypeStringB-1
B  TypeStringA-2 TypeStringB-2
C  TypeStringA-3 Null
D  TypeStringA-4 TypeStringB-3
E  TypeStringA-5 TypeStringB-4

现在我有两个子查询和一个 where:

select
query1.C1
query1.C2
query2.C2
(select C1, C2 
from Table_1) as query1
(select C2
from table_2) as query2
where query1.C1 = query2.C1
order by query1.C1

但从逻辑上讲,我的结果中没有我需要显示的 Null 数据,这就是我得到的:

  Result
A  TypeStringA-1 TypeStringB-1
B  TypeStringA-2 TypeStringB-2
D  TypeStringA-4 TypeStringB-3
E  TypeStringA-5 TypeStringB-4

问题是我应该使用什么来根据需要使用 Null 数据拍摄表格?

【问题讨论】:

    标签: sql sql-server sql-server-2008 join merge


    【解决方案1】:
    select  coalesce(t1.C1, t2.C1)
    ,       t1.C2
    ,       t2.C2
    from    Table_1 t1
    full outer join
            Table2 t2
    on      t1.C1 = t2.C1
    

    【讨论】:

    • 嗨 Andomar,我在合并时遇到错误,这是将 nvarchar 值 'xx' 转换为数据类型 int 时出现的错误 Conversion failed 。但是我将它删除并合并并且它起作用了。合并的目的是什么?谢谢。
    • Coalesce 返回第一个不为空的参数。如果 Table_1 中没有匹配的行,则从 Table_2 中选择 C1。
    猜你喜欢
    • 2023-03-12
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多