mysql - 使用其他两个表中的数据填充新表

标签 mysql sql

我正在尝试将一些数据从两个表迁移到一个新表中,但很难弄清楚如何执行此操作。

数据:

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/

相关文章:

sql - Oracle 12c - 我们可以在将数据插入表而不是整个表时锁定分区吗?

c# - 带有 IN 语句的 Oracle 参数?

mysql - 从两个连接表更新单个表 (SQL)

php - 如何从存储过程中获取特定的 count(*) 列作为字符串或整数

python - 如何计算 SQL 行并使用 FLASK 将其存储在变量中,而不总是得到 1 作为答案?

mysql - Doctrine inversedBy 字段包含 PersistentCollection

PHP 简单插入问题

mysql - 我们应该在下面的例子中使用 "LIMIT clause"吗?

mysql - 如何使用mysql向存储过程传递参数

mysql查询左连接和过滤