タームリストとブラックリストの 2 つの MySQL テーブルを取得しました。どちらもフィールド「用語」にインデックスがあり、ブラックリストにはフィールド「ステータス」に別のインデックスがあります。
ステータスが「A」のブラックリストにも表示される用語リストの用語のステータスを「B」に更新したい場合は、次の SQL ステートメントを発行します。
update termlist set status = 'B' where term in (select term from blacklist where status = 'A')
これにより、termlist で完全なテーブル スキャンが実行されます。「内部結合による更新」を使用したいのですが、select ステートメントに where 句があるため使用できません。
そのselectステートメントから一時テーブルを作成し、その一時テーブルで内部結合を更新できることは知っていますが、この更新を何度も行う場合、これはちょっと面倒です。
テーブル全体をスキャンせずに作業を実行できる単一の更新ステートメントはありますか?