2011-03-10 33 views
1

我是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是原始HR数据。 在where子句中,有三个。 COLUMN_1与两个关系。 COLUMN_1。想象一下,three.COLUMN_1是用户的ID,它映射到两个用户的ID。 COLUMN_1。也想象三个。 COLUMN_2是一个用户的家庭电话号码,它映射到一个用户的家庭电话号码。 COLUMN_1。当数据输入到新表格中时,我只需要一个独特个人的数据。 创建新表的原因是优化报告。从三个表格中绘制数据非常耗时。我有超过150GB的大桌子。如果我可以将需要的数据加载到临时表中,则查询将运行得更快。

任何帮助将不胜感激。提前致谢。

回答

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 
+0

乔,谢谢您的及时回复。你的查询是现货。插入这里而不是更新是有意义的。 – 2011-03-10 15:32:27

相关问题