更新字段设置为相同字段中的行值

时间:2016-10-07 02:09:45

标签: mysql sql

我正在尝试更新特定字段,并将其设置为等于同一字段中某行的值。

到目前为止我尝试过的是:

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 1的值更新为itemid 2的值。

这甚至可能吗?提前谢谢。

2 个答案:

答案 0 :(得分:3)

在MySQL中,如果您在某个表上执行UPDATE / INSERT / DELETE查询,则无法在内部查询中引用该表。一种解决方法是在内部查询中使用子查询:

UPDATE tblitem 
SET imagefilename = 
(
    SELECT imagefilename 
    FROM (SELECT * FROM tblitem) AS t 
    WHERE itemid = 2
)
WHERE itemid = 1

答案 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是一个简单的解决方法。