2016-10-07 16 views
0

特定のフィールドを更新し、同じフィールドの行の値と同じ値に設定しようとしています。私がこれまで試してみましたがこれです更新フィールドが同じフィールドの行の値に設定されました

:私はここでやろうとしています何

enter image description here

mysql> UPDATE tblitem SET imagefilename = (SELECT imagefilename from tblitem where itemid=2) where itemid=1' 
1093 - You can't specify target table 'tblitem' for update in from clause 

はitemidの2

の値にアイテムID 1の値を更新することです

それは可能ですか?前もって感謝します。

答えて

1

ではなくjoinを使用してください:

UPDATE tblitem t JOIN 
     (SELECT imagefilename from tblitem where itemid = 2 
     ) t2 
    SET t.imagefilename = t2.imagefilename 
    WHERE itemid = 1; 

は、SQL標準および他のデータベースを使用すると、update書の他の場所で更新されているテーブルを参照することができます。しかし、MySQLはこれを許可していません。 JOINは簡単な回避策です。

+0

これは高速でした。ありがとうございました!できます。 – FewFlyBy

2

MySQLでは、テーブル上でUPDATE/INSERT/DELETEのクエリを実行している場合、内部クエリで上記のテーブルを参照することはできません。回避策の1つは、内部クエリ内でサブクエリを使用することです。

UPDATE tblitem 
SET imagefilename = 
(
    SELECT imagefilename 
    FROM (SELECT * FROM tblitem) AS t 
    WHERE itemid = 2 
) 
WHERE itemid = 1 
関連する問題