我有 2 个 MySQL 表:termlist 和 blacklist。它们都在“术语”字段上有索引,而黑名单在“状态”字段上有另一个索引。
我想将术语列表中的术语状态更新为状态为“A”的黑名单中的术语状态为“B”,我发出以下 SQL 语句:
update termlist set status = 'B' where term in (select term from blacklist where status = 'A')
它会导致对 termlist 进行全表扫描。我想使用“带有内部连接的更新”,但我不能,因为 select 语句中有 where 子句。
我知道我可以从该 select 语句创建一个临时表,然后使用该临时表更新内部联接,但如果我想多次执行此更新,这有点乏味。
是否有一个更新语句可以在没有全表扫描的情况下完成工作?