【问题标题】:SQL Server - Insert into tbl2 from tbl1 where tbl1.column1 <> tbl2.column1SQL Server - 从 tbl1 插入 tbl2,其中 tbl1.column1 <> tbl2.column1
【发布时间】:2021-10-26 09:15:17
【问题描述】:

我有 2 个表,它们具有相同的列。就像主题标题所说的那样,我想在第二张表中插入第一张表中同一列的值不同的记录。

我试过了:

SELECT * FROM Table1 INNER JOIN Table2 ON Table2.column1 <> Table1.column1;

SELECT * FROM Table1, Table2 WHERE Table1.column1 <> Table2.column1;

但结果是两个表中的复制值,我认为是因为我从两个表中进行选择。

如果我执行以下操作:

INSERT INTO Table2 SELECT * FROM Table1 WHERE Table1.column1 <> Table2.column1;

它给我一个错误:

Impossibile associare l'identificatore in più parti "Table2.column1"

【问题讨论】:

  • 能否请您提供表结构、一些示例数据和所需的输出

标签: sql sql-server insert


【解决方案1】:

除非您指定所讨论的是哪一行,否则您无法比较列值。在您的情况下,这听起来像是“哪一行”是“Table2 中的任何行”问题的答案,因此您可以将存在量词应用于Table2 的行来决定您希望Table1 的哪些行插入。长话短说,您告诉 SQL 插入缺失的行。

对应的SQL如下:

INSERT INTO Table2
    SELECT * FROM Table1 t1
    WHERE NOT EXISTS (
        SELECT * FROM Table2 t2
        WHERE t1.column1 = t2.column1
    )

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多