我正在尝试将一些数据从两个表迁移到一个新表中,但很难弄清楚如何执行此操作。
数据:
table fh rows: A, B, C, X, Y
table fhgb rows: B, C
table gvsi (currently empty) rows: A, X, Y
A is unique, and B+C is unique
完成后,表 gvsi 应包含 fh 中 X=value 的所有行,并且该行尚未在 fhgb 中。
这是到 gvsi 的一次性数据迁移,因此性能并不是一个大问题。 fh 有 3600 万行,其中 1200 万行是我关心的(其中 X=值)。 fhgb 有 1000 万行。我预计完成后 gvsi 将包含大约 200 万行 (12mil-10m)。
我用谷歌搜索并尝试了很多东西,但没有任何效果(连接、子查询等)。任何人都可以帮我弄清楚如何做到这一点吗?
最佳答案
INSERT INTO `gvsi` (A, X, Y)
SELECT A, X, Y
FROM fh
WHERE X = 'value'
AND ( fh.B NOT IN (SELECT DISTINCT B FROM fhgb)
AND fh.C NOT IN (SELECT DISTINCT C FROM fhgb)
);
应该可以了。
关于mysql - 使用其他两个表中的数据填充新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14400924/