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

6 mysql sql-update

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

我创建了表格

create table myTable (id INT, myData varchar(20));
Run Code Online (Sandbox Code Playgroud)

我有价值观

insert into myTable VALUES 
(1, 'Value 1'),
(2, 'Value 2'),
(3, 'Value 3');
Run Code Online (Sandbox Code Playgroud)

现在我插入一行作为

insert into myTable (id) values (4);
Run Code Online (Sandbox Code Playgroud)

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

我在下面试过,但是不行.

 update myTable SET myData=(select myData FROM myTable WHERE id=3) WHERE id=4;
Run Code Online (Sandbox Code Playgroud)

请告诉我需要做什么.

在sqlfiddle演示

注意

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

jue*_*n d 10

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

您无法在FROM子句中为更新指定目标表'myTable'

但你可以这样欺骗MySQL

update myTable
SET myData=(select * from (select myData FROM myTable WHERE id=3) x)
WHERE id=4;
Run Code Online (Sandbox Code Playgroud)

  • x是内部子查询的别名。您需要给子查询命名。 (2认同)