我有一个数据库,用于跟踪我所在联赛的统计数据和平均值。我有一个结果表和一个排名表,我将结果中的“分数”添加到排名中的总体“分数”。我目前有一个查询成功地将结果中的分数添加到排名表中。但是,当我添加新结果时,排名不会更新。
这是我的查询,我用它来对从结果到排名的分数求和。
UPDATE standings s,( SELECT team_id, sum(points) as mysum
FROM results GROUP BY team_id) as r
SET s.points = r.mysum
WHERE s.team_id = r.team_id;
我正在尝试使用触发器自动更新总分。我是触发器的新手,在运行以下命令时收到语法错误 #1064。
CREATE TRIGGER standingsUpdate
AFTER INSERT ON results
FOR EACH ROW
BEGIN
UPDATE standings s,( SELECT team_id, sum(points) as mysum
FROM results GROUP BY team_id) as r
SET s.points = r.mysum
WHERE s.team_id = r.team_id;
END
有人能给我指出正确的方向吗?有没有更好的方法来实现这一点?
谢谢, -杰森
最佳答案
您的触发器应该引用新:
DELIMITER $$
CREATE TRIGGER standingsUpdate
AFTER INSERT ON results
FOR EACH ROW
BEGIN
UPDATE standings s
SET s.points = s.points + new.points
WHERE s.team_id = new.team_id;
END;$$
DELIMITER ;
不过要小心。您还应该有 update
和 delete
触发器。
如果您可以通过在需要时聚合这些点来做到这一点,那么这是一个更好的解决方案(或者至少更简单)。
关于mysql - 触发器从另一个表 MySQL 更新总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591442/