我是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的大表。如果我可以将我需要的数据加载到临时表中,查询将运行得更快。
非常感谢任何帮助。提前谢谢。
答案 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