可能重复:
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;
请告诉我需要做什么。
实际上我的myData类型为 MEDIUMBLOB ,但出于演示目的,我使用了varchar。
答案 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;