如何将一行数据复制到另一行

时间:2012-09-24 11:48:02

标签: mysql sql-update

  

可能重复:
  Update row with data from another row in the same table

我创建了表格

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;

请告诉我需要做什么。

Demo at sqlfiddle

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

2 个答案:

答案 0 :(得分:10)

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

  

您无法在FROM子句

中为更新指定目标表'myTable'

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

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

答案 1 :(得分: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;

Updated fiddle