【问题标题】:Trigger or event to get average from another table触发器或事件从另一个表中获取平均值
【发布时间】:2018-11-03 18:50:38
【问题描述】:
ratings_table
-------------------------
id(PK)  color(FK)  rating
=========================
1       green      5  
2       green      2
3       blue       4
4       yellow     4
5       blue       3

colors_table:
---------------------
color(PK)  avg_rating
=====================
green      ?  
blue       ?
yellow     ?

如何设置每种颜色的平均评分?当新数据插入到 rating_table 或更新记录时,我想自动更改它。

我想这很容易,但我不知道该怎么做。

【问题讨论】:

  • 提示:GROUP BY, AVG().
  • 欢迎来到 SO!请编辑问题以添加您迄今为止尝试的任何触发代码。所以我们可以引导您朝着正确的方向前进。

标签: mysql sql select average


【解决方案1】:

最简单的方法是将colors_table 作为一个视图而不是一个表格,您需要在其中处理触发器:

CREATE VIEW colors AS
SELECT   color, AVG(rating)
FROM     ratings_table
GROUP BY color

【讨论】:

  • 所以我真的不需要存储平均评分。老实说,这是合乎逻辑的......非常感谢!
  • @TheFurgeurge 我不会费心去存储它,除非你有大量的记录并且查询视图变得太慢了。
  • 有什么简单的保存方法吗?
猜你喜欢
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多