我有一张价格合理的桌子。如果价值高于所有价格的平均值,我需要更新价格。这是我正在使用的查询:
update parts
set price = price*0.85
where price > select avg(price) from parts;
我一直收到错误1093:您无法在FROM子句中为更新指定目标表“parts”。我尝试使用(从部件中选择平均(价格))作为A,但我得到相同的错误
答案 0 :(得分:1)
如果尝试使用与主查询相同的表,则无法在WHERE
子句中使用子查询。你必须加入它。
UPDATE parts AS p1
JOIN (SELECT avg(price) AS avg_price
FROM parts) AS p2
ON p1.price > p2.avg_price
SET p1.price = p1.price * 0.85
答案 1 :(得分:0)
更新部分p2 设置p2。价格= p2.price * 0.85 其中p2.price> (从部分p1中选择avg(p1.price);