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_x、 返されたすべての行を挿入して table_a を更新field_yしたいと考えています。table_bサブクエリでの 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 に答える