6

可能重复:
使用同一表中另一行的数据更新行

我已经创建了表

create table myTable (id INT, myData varchar(20));

我的价值观是

insert into myTable VALUES 
(1, 'Value 1'),
(2, 'Value 2'),
(3, 'Value 3');

现在我将行插入为

insert into myTable (id) values (4);

现在我想为 id 4 插入数据。id 4 的值与 id 3 相同。所以我相信我需要使用 UPDATE 语句。

我在下面尝试过,但是它不起作用。

 update myTable SET myData=(select myData FROM myTable WHERE id=3) WHERE id=4;

请让我知道需要做什么。

在 sqlfiddle 演示

笔记

实际上,我的 myData 类型为MEDIUMBLOB,但出于演示目的,我使用了 varchar。

4

2 回答 2

10

在 MySQL 中,您无法更新您选择的同一张表。这会导致错误

您不能在 FROM 子句中指定目标表“myTable”进行更新

但是你可以通过创建一个临时表来欺骗 MySQL

update myTable
SET myData=(select * from (select myData FROM myTable WHERE id=3) x)
WHERE id=4;
于 2012-09-24T11:51:56.640 回答
2

你能不能inner join像这样使用带有别名的表:

update myTable left_table 
inner join myTable right_table ON right_table.id = 3
set left_table.myData = right_table.myData
where left_table.id = 4;

更新的小提琴

于 2012-09-24T12:00:40.097 回答