【问题标题】:Merge tables with unequal number of columns without returning duplicate rows合并列数不相等的表而不返回重复行
【发布时间】:2021-06-29 11:53:37
【问题描述】:

我有两张桌子,一张叫original_table,另一张叫table_with_additional_column

table_with_additional_columnoriginal_table 的子集,但有一个名为sequenceNr 的附加列。我想合并这两个表,以便我可以从original_table 中获取所有行,并将sequenceNr 设置为NULL,其中其余列值与table_with_additional_column 中的值不匹配。我想替换 original_table 中的行,而不是仅插入 table_with_additional_column 中的行

这是一个例子:

original_table

column_1 column_2 column_3
aaa bbb ggg
ccc ddd hhh
eee fff iii

table_with_additional_column

column_1 column_2 column_3 sequencenr
aaa bbb ggg 1
ccc ddd hhh 2

合并后我想要什么:

column_1 column_2 column_3 sequencenr
aaa bbb ggg 1
ccc ddd hhh 2
eee fff iii NULL

这是我目前的查询:

SELECT 
  column_1, column_2, column_3, sequenceNr

FROM (
    SELECT 
        table_A.*, 
        table_B.sequenceNr
    FROM table_A, table_B
) AS table_with_additional_column

RIGHT JOIN original_table ON original_table.column_1 = table_with_additional_column.column_1
AND original_table.column_2 = table_with_additional_column.column_2 
AND original_table.column_3 = table_with_additional_column.column_3

对于如何合并两个表的 SQL 查询,我将不胜感激。提前致谢。

【问题讨论】:

    标签: sql


    【解决方案1】:

    您可以为此使用left join

    select ot.*, twac.sequencenr
    from original_table ot left join
         table_with_additional_column twac
         on ot.col1 = twac.col1 and
            ot.col2 = twac.col2 and
            ot.col3 = twac.col3;
    

    您的描述几乎准确地解释了left join 的作用。

    【讨论】:

      猜你喜欢
      • 2020-05-29
      • 2015-03-25
      • 2021-03-30
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 2014-08-18
      • 2012-11-30
      相关资源
      最近更新 更多