mysql - 从另一个表更新平均值的触发器

标签 mysql sql

我有两个表:Product 和 Review。我正在尝试创建一个触发器,在插入新评论时更新产品表(列:星号)。它们通过 product_id 连接。我试过这段代码,但我猜它不对。

代码:

create trigger update_stars after insert on Review for each row 
update Product
set stars=(select avg(stars) from Review where product_id=Product.product_id)
where product_id=new.product_id;

ERD

最佳答案

对于 sql 代码,您可以使用基于内部连接的更新,例如:

update Product p
inner join (
  select product_id, avg(stars) avg_stars
  from Review
  group by product_id
) t on t.product_id = p.product_id
set stars=t.avg_stars 

关于mysql - 从另一个表更新平均值的触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49415545/

相关文章:

sql server而不是触发带有插入的变量和值的插入语句

mysql - 从两个表中选择 MAX 返回一个奇怪的值

mysql - 不允许主机连接到 000webhost 中的此服务器

php - 没有 SQLite 扩展的 PHP 中的 SQLite

php - 从 MySQL 填充 PHP 销售表(包括空月)

sql - 在Oracle SQL select查询中使用列引用以避免重新计算

mysql - 来自不同表 mySQL 的多个 SELECT COUNT

mysql - 使用游标或多次调用存储过程哪个更好

mysql - 如何更改字符串中的字符顺序

php - 通过单个查询获取类别和文章