使用内部联接在同一个表中更新

时间:2015-06-19 14:47:06

标签: mysql sql

我的实际(和破碎)查询是这样的:

UPDATE t_1 SET b=(SELECT b FROM t_1 WHERE a=1)  WHERE b=1

如何使用内部联接?

2 个答案:

答案 0 :(得分:5)

你可以欺骗MySQL:

UPDATE t_1 
SET b=(SELECT b FROM (select * from t_1) t WHERE a=1)  
WHERE b=1

加入版本:

update t_1
join (select * from t_1) t
on t.a = 1 and t_1.b=1
set t_1.b= t.b;

您的来源在哪里证明所有子查询都比连接慢?

答案 1 :(得分:0)

嗯,你可以这样做:

UPDATE t_1 
SET t1.b=t2.b
FROM T_1 t1
INNER JOIN T_1 t2
  ON t2.a=1
WHERE b=1

因此,如果您的阅读更具可读性,那就去吧。