将具有唯一字段的记录移动到第二个 table

Move records with unique field into 2nd table

我有 2 个 table。 table_a为当前数据,table_b为更新数据。我需要做的第一件事是移动所有新记录,即,将记录从 table_a 移动到 table_b,这些记录在主索引字段 (primaryField) 中没有找到值 table_a

我试过以下变体:

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)

这种方法行不通。您如何 select 只有 table 中具有特定字段值的行在第二个 table 的匹配字段中找不到?

您可以 LEFT JOIN table_atable_b 然后只插入 table_a 中与 table_b.[=16 中的任何内容都不匹配的记录=]

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
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)