mysql - 错误 1093 使用数据聚合更新表

标签 mysql

我有一张表,里面有价格。如果该值大于所有价格的平均值,我需要更新价格。这是我正在使用的查询:

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

我不断收到错误 1093:您无法在 FROM 子句中指定要更新的目标表“parts”。我尝试使用(从零件中选择平均(价格))作为 A 但出现相同的错误

最佳答案

如果子查询尝试使用与主查询相同的表,则不能在 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

关于mysql - 错误 1093 使用数据聚合更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46594549/

相关文章:

mysql - SQL查询仅获取日期的最新值

mysql - 为 mysql root 帐户创建密码导致 WAMP 出现问题

mysql - 我的大表连接有问题吗?

mysql - 我需要启用远程数据库访问吗?

php - PHP 中精确的预计到达时间结果的日期差异

mysql - SQL 错误 - 空自动递增

mysql - SQL 查询来比较个人平均值和组平均值

Mysql 使用 join、group by 和having 子句更新表

mysql - 使用\G 的垂直查询不起作用

mysql - 如何快速重构/重命名大型数据库中的表、字段和值?