0

我有一个在表中插入数据的查询,从另一个表中检索数据,WHERE 条件指定第一个表中的所有记录:

INSERT INTO `table_a` (`field_x`, `field_y`)
SELECT `field_x`, `field_y`
FROM `table_b`
WHERE `field_x` IN
(
   SELECT `field_x`
   FROM `table_a`
) ON DUPLICATE KEY UPDATE `field_y`=`table_b`.`field_y`, `field_x`=`table_b`.`field_x`

实际上,对于 table_a中的每一个field_x,我想选择所有field_xfield_y从中选择table_b,然后通过插入所有返回的行来更新 table_a;我已经知道在子查询中使用 IN 是很慢的。我不确定这是正确的方法,考虑到它也是超慢的,而且我也在问自己这种方法是否完全错误。这里有没有 SQL 专家可以帮助并解决我的问题解决问题的正确方法?

4

1 回答 1

0
INSERT INTO `table_a` (`field_x`, `field_y`)
SELECT `table_b`.`field_x`, `table_b`.`field_y`
FROM `table_a`
join `table_b`
on DUPLICATE KEY UPDATE `table_a`.`field_y`=`table_b`.`field_y`
于 2015-05-29T12:11:11.087 回答