我是stackoverflow的新手,所以请温柔。我的 SQL 语法有严重问题。底线是我想从一个表复制到另一个没有重复。我打算比较两个字段,并且仅当destinationTB 中的field1 为NULL 时才插入。
请知道我是 SQL 语句的新手,所以任何扩展知识都会有所帮助......例如我可以使用变量。我从 stackoverflow 研究中得到了最初的声明,但无法完成。
这是我所拥有的,感谢您的帮助:
INSERT INTO destinationTB
SELECT sourceTB.field1, destinationTB.field1
FROM sourceTB
LEFT JOIN destinationTB
ON sourceTB.field1 = destinationTB.field1
WHERE destinationTB.field1 IS NULL;
----- 修改后的问题 -----
感谢您的小费!我将尝试修改问题(和未来的问题)以使其更易于理解,并对我上一个问题中尴尬的“新手”气味表示歉意。
我正在寻找的最终结果是从一个表复制到另一个表而不重复。我正在使用两张表。第一个是destinationTB,它有四个字段,我只想填充其中一个。第二个表是 sourceTB,它有多个字段,但我只需要从中获取信息。我的计划是开始插入到destinationTB。由于第一个值不在那里,它应该报告为 NULL。在第一次插入完成后,字符串仍在针对现在存在的相同值运行,它将不再报告 NULL 并继续前进,直到找到另一个不在目标 TB 中的值。
例如,让我们以电视为例。有多个不同的电视制造商。在这个例子中,我们会说我们有一个 SHARP-32in、一个 SHARP-45in 和一个 SHARP-60in。我希望destinationTB只有一个SHARP实例(即使sourceTB中有三个。所以,我试图使用该JOIN语句将destinationTB.manufacturer与sourceTB.manufacturer进行比较。当我运行这个查询时,我将在之后粘贴在本段中,它返回所有三个实例,因此我的destinationTB 中最终得到了三个SHARP 值。
这是我根据您的建议尝试的最新方法:
INSERT INTO destnationTB (field1)
SELECT sourceTB.field1
FROM sourceTB
LEFT JOIN destinationTB ON sourceTB.field1 = destinationTB.field1
WHERE destinationTB.field1 IS NULL;