【问题标题】:How to use INSERT INTO with a LEFT JOIN?如何将 INSERT INTO 与 LEFT JOIN 一起使用?
【发布时间】:2017-12-15 09:33:48
【问题描述】:

如果有人可以提供帮助,我将不胜感激。 我需要合并两张表。到目前为止,我每次都这样做。

  SELECT * INTO TABLE_3

  FROM TABLE_1 LEFT JOIN TABLE_2
    ON TABLE_1.[DATE] = TABLE_2.[DATE1]

但是,我想跳过创建新表的部分并将我需要的列直接插入现有表中。 我试过这样做,

INSERT INTO [TABLE_1] (USD,EUR,RUR)

SELECT USD,EUR,RUR 

FROM TABLE_1 AS T1 LEFT JOIN TABLE_2 AS T2
   ON T1.[DATE] = T2.[DATE1]

但出现错误提示我的列名不明确

我使用 SQL Server 2014。

【问题讨论】:

  • 只需为列名添加别名,如T1.USD 等。
  • 使用表别名完全限定列名,例如T1.USD 等
  • @Serg 请在下面找到答案
  • table_1 中有另一列称为 DPD,它不允许 NULLS。当我添加别名时,我收到此列不能为 NULL 并且插入语句已终止的错误。我真的不明白为什么会发生此错误,因为我没有将该列用于任何内容。

标签: sql-server join sql-insert


【解决方案1】:

请指定别名以说明该列应从哪个表中获取,而不是直接给出列名。可能在这里两个表都具有您要选择的相同列。您应该指定确切的表格

INSERT INTO [TABLE_1] (USD,EUR,RUR)

SELECT [T1/T2].USD,[T1/T2].EUR,[T1/T2].RUR 

FROM TABLE_1 AS T1 LEFT JOIN TABLE_2 AS T2
   ON T1.[DATE] = T2.[DATE1]

您可以根据业务逻辑指定 T1 或 T2。请按照此处所述重写查询。这将解决问题。请试试这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多