MySQL使用其他列的数据计算平均值填充列

时间:2016-03-01 03:36:28

标签: mysql sql

我有两个表:一个是名称,另一个是通过nameID连接的评级。我想从评级表中的数据中找到评级的平均值,并将该结果填充到场地表上的相应场地。我不知道该怎么办。有关如何使用MySQL执行此操作的任何指示?

1 个答案:

答案 0 :(得分:0)

这应该有效,但是像其他人一样说从评级表中取平均数可能是一个更好的主意,而不是用触发器更新场地表。因此,这创建了一个更新场地平均评级的程序,该评级从两个触发器调用,用于在评级表上插入和更新。

DELIMITER //

CREATE PROCEDURE updateVenueRating(IN venue_id INT)
READS SQL DATA
BEGIN

update venue AS v
SET v.avgrating = 
(select avg(rating)
from ratingtable
where ratingtable.venueid = v.id 
)
where v.id = venue_id;

END//

CREATE TRIGGER venue_insert_trigger
    AFTER INSERT ON ratingtable
    FOR EACH ROW
BEGIN
    CALL updateVenueRating(NEW.VenueId);
END//

CREATE TRIGGER venue_update_trigger
    AFTER UPDATE ON ratingtable
    FOR EACH ROW
BEGIN
    CALL updateVenueRating(NEW.VenueId);
END//
DELIMITER ;