我有一个在表中插入数据的查询,从另一个表中检索数据,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_x
并 field_y
从中选择table_b
,然后通过插入所有返回的行来更新 table_a;我已经知道在子查询中使用 IN 是很慢的。我不确定这是正确的方法,考虑到它也是超慢的,而且我也在问自己这种方法是否完全错误。这里有没有 SQL 专家可以帮助并解决我的问题解决问题的正确方法?