在mySQL中,您可以使用现有表中的字段更新新创建的表吗?

时间:2011-03-10 15:07:29

标签: mysql

我是mySQL的新手,希望对我正在运行的查询提供一些帮助。我想用现有表中的字段更新新创建的表。这是我正在使用的。

UPDATE NEW_TABLE new, OLD_TABLE_1 one, OLD_TABLE_2 two, OLD_TABLE_3 three
SET
new.COLUMN_1 = one.COLUMN_1,
new.COLUMN_2 = one.COLUMN_2,
new.COLUMN_3 = one.COLUMN_3,
new.COLUMN_4 = two.COLUMN_1,
new.COLUMN_5 = two.COLUMN_2,
new.COLUMN_6 = three.COLUMN_1,
new.COLUMN_7 = three.COLUMN_2
WHERE
  three.COLUMN_1 = two.COLUMN_1 AND
  three.COLUMN_2 = one.COLUMN_1;

我的数据是所有人力资源数据。 OLD_TABLE_1是地址信息,OLD_TABLE_2是医疗信息,OLD_TABLE_3是原始人力资源数据。 在where子句中,有三个。COLUMN_1与两个。COLUMN_1有关系。COLUMN_1。想象一下,三个.COLUMN_1是用户的ID,它将用户的ID映射为两个。COLUMN_2。还可以想象三个。COLUMN_1是用户的家庭电话号码,它映射到一个用户的家庭电话号码。{{1}}。当数据输入新表时,我只想要一个独特个体的数据。 创建新表的原因是优化报告。从三个表中绘制数据非常耗时。我有超过150GB的大表。如果我可以将我需要的数据加载到临时表中,查询将运行得更快。

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果这是一张全新的表格,您需要INSERT代替UPDATE

INSERT INTO NEW_TABLE
    (COLUMN_1, COLUMN_2, COLUMN_3, COLUMN_4, COLUMN_5, COLUMN_6, COLUMN_7)
    SELECT one.COLUMN_1, one.COLUMN_2, one.COLUMN_3, two.COLUMN_1, two.COLUMN_2, three.COLUMN_1, three.COLUMN_2
        FROM OLD_TABLE_1 one
            INNER JOIN OLD_TABLE_3 three
                ON one.COLUMN_1 = three.COLUMN_2
            INNER JOIN OLD_TABLE_2 two
                ON three.COLUMN_1 = two.COLUMN_1