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 に答える