2017-10-05 65 views
0

我有一个表中有价格。如果价值高于所有价格的平均值,我需要更新价格。这是我使用的查询:错误1093使用其数据聚合更新表

update parts 
set price = price*0.85 
where price > select avg(price) from parts; 

我不断收到错误1093:不能在FROM子句指定目标表“零件”进行更新。我尝试使用(从部分中选择avg(价格))作为A,但我得到相同的错误

回答

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 
0

更新部分P2 组P2。价格= p2.price * 0.85 其中p2.price>(从部分p1中选择avg(p1.price);