【发布时间】:2015-05-29 12:04:26
【问题描述】:
我有一个在表中插入数据的查询,从另一个表中检索数据,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,我想从 table_b 中选择所有 field_x 和 field_y,然后通过插入所有返回的行来更新 table_a;
我已经知道在子查询中使用 IN 很慢;
我不确定这是正确的方法,考虑到它也是超慢的,我也在问自己这种方法是否完全错误..
这里有没有任何 SQL 专家可以帮助我找到解决问题的正确方法?
【问题讨论】:
-
你试过加入吗?
-
你的表有合适的索引吗?
标签: mysql subquery where-in insert-select