【发布时间】:2016-05-24 09:50:56
【问题描述】:
因此,我目前正在尝试将一张桌子添加到另一张桌子中,但由于某种原因,它没有按照我想要的方式工作。 两个表中都有三列,如果表 2 的前 2 列不在表 1 中,我只想将表 2 中的每一行数据添加到表 1(我不关心第 3 列)
这是我目前所拥有的:
INSERT INTO table1 (col1, col2, col3)
SELECT a.col1, a.col2, a.col3
FROM table2 as a
WHERE NOT EXISTS (SELECT b.col1, b.col2
FROM table1 as b
WHERE a.col1 = b.col1 AND a.col2 = b.col2);
我检查了一下,这似乎应该可以工作,但它不是,但任何人都知道为什么吗?
【问题讨论】:
-
这个语法是正确的——它有时被称为反连接。这实际上是做你正在尝试的事情的首选方式。我唯一要补充的是,选择中“不存在”中的列是不必要的。使用半连接或反连接,为简单起见,您可以“选择 1”或“选择空”。也就是说,你所做的并没有错。您能否解释错误并在两个表的数据之前/之后显示一些示例。 你所做的应该有效
-
@spaceboound 这个查询是正确的。您可能会在其他地方出错。如果您可以将屏幕截图放在您得到的错误消息或输出中会更好。
标签: sql sqlite insert duplicates