将具有唯一字段的记录移动到第二个 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_a
到 table_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)
我有 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_a
到 table_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)