使用INNER JOIN重写不带IN的UPDATE查询

时间:2011-10-25 16:04:37

标签: mysql join

我有一个问题:

UPDATE table_1 set field_1 = 1 where field_2 IN 
(SELECT field_2 from table_2 where field_3 = 1)

然而,对于大型数据库(> 2000ms),这需要很长时间。是否还有使用JOIN重写此查询以避免使用IN?

注意:field_1和field_3上有索引但是它对查询没有帮助。这是使用MySQL。

3 个答案:

答案 0 :(得分:1)

UPDATE table_1, table_2
    SET table_1.field_1 = 1
    WHERE table_1.field_2 = table_2.field_2
        AND table_2.field_3 = 1

答案 1 :(得分:0)

所需代码如下,

UPDATE t1 
set field_1 = 1 
from table_1 t1
join table_2 t2
    on t1.field_2 = t2.field_2
where t2.field_3 = 1

答案 2 :(得分:0)

测试了这段代码。

UPDATE table_1 t1 
 INNER JOIN table_2 t2 
  SET t1.field_1 = 1
WHERE t1.field_2 = t2.field_2
AND t2.field_3 = 1;

干杯!