将具有唯一字段的记录移至第二个表

时间:2016-01-08 00:52:28

标签: mysql select unique

我有2张桌子。 table_a是当前数据,table_b已更新数据。我需要做的第一件事是移动所有新记录,即将记录从table_a移动到table_b,其中primaryField中的值不在table_a中{1}}。

我尝试过以下各种变体:

INSERT INTO table_b (`col1`,`col2`,`col3`,etc...)
VALUES (`col1`,`col2`,`col3`,etc...)
FROM table_a
WHERE table_a.primaryField NOT IN (SELECT table_b.primaryField)

这种方法不起作用。如何仅选择表中具有在第二个表的匹配字段中找不到的特定字段值的行?

2 个答案:

答案 0 :(得分:0)

您可以LEFT JOIN table_atable_b,然后只插入table_a中与table_b中的任何内容都不匹配的记录。

INSERT INTO table_b (col1, col2, col3)
SELECT a.col1, a.col2, a.col3
FROM table_a a LEFT JOIN table_b b ON a.primaryField = b.primaryField
WHERE b.primaryField IS NULL

答案 1 :(得分:0)

SELECT primaryField
From Table_a
WHERE primaryField NOT IN (SELECT primaryField FROM Table_b)

你可以查询

INSERT INTO table_b (`col1`,`col2`,`col3`,etc...)
VALUES (`col1`,`col2`,`col3`,etc...)
FROM table_a
WHERE table_a.primaryField NOT IN (SELECT primaryField FROM table_b.primaryField)