Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用内部联接在同一个表中更新_Mysql_Sql - Fatal编程技术网

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

Mysql 使用内部联接在同一个表中更新,mysql,sql,Mysql,Sql,我的实际问题是: UPDATE t_1 SET b=(SELECT b FROM t_1 WHERE a=1) WHERE b=1 我怎样才能使用内部连接呢?你可以在这方面欺骗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

我的实际问题是:

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

我怎样才能使用内部连接呢?

你可以在这方面欺骗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;

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

你可以在这方面欺骗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;
您的源代码在哪里证明所有子查询都比连接慢

你可以这样做:

UPDATE t_1 
SET t1.b=t2.b
FROM T_1 t1
INNER JOIN T_1 t2
  ON t2.a=1
WHERE b=1
因此,如果这对你来说更具可读性,那就去做吧。

好吧,你可以这样做:

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

所以,如果这对你来说更具可读性,那就去做吧。

我完全不明白你想要什么。你能举一个例子,说明你的行在前后应该是什么样子的吗?而且是坏的,为什么是坏的?@Dorus a=1和b=1必须总是有相同的数字,很难解释为什么。它被破坏了,因为您不能对同一个表执行子查询…类似于更新t_1 SET b=从t_1中选择TOP 1 t_2.b作为t_2,其中t_2.a=t_1.b?这可能仍然不起作用,但它提供了idea@Dorus看看Tim3880的答案……我完全不明白你想要什么。你能举一个例子,说明你的行在前后应该是什么样子的吗?而且是坏的,为什么是坏的?@Dorus a=1和b=1必须总是有相同的数字,很难解释为什么。它被破坏了,因为您不能对同一个表执行子查询…类似于更新t_1 SET b=从t_1中选择TOP 1 t_2.b作为t_2,其中t_2.a=t_1.b?这可能仍然不起作用,但它提供了idea@Dorus看看Tim3880的答案…谢谢,这是真的,但我想使用内部联接,因为它们比子查询快…@Alexander不正确-有些子查询可能慢一些,但这完全取决于编译器如何制定计划。谢谢,这是真的,但是我想使用内部连接,因为它们比子查询快…@Alexander不正确-有些子查询可能慢一些,但这完全取决于编译器如何开发计划。