我正在尝试更新特定字段,并将其设置为等于同一字段中某行的值。
到目前为止我尝试过的是:
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的值。
这甚至可能吗?提前谢谢。
答案 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
是一个简单的解决方法。