我有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)
这种方法不起作用。如何仅选择表中具有在第二个表的匹配字段中找不到的特定字段值的行?
答案 0 :(得分:0)
您可以LEFT JOIN
table_a
到table_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)