mysql - 触发器从另一个表 MySQL 更新总和

标签 mysql

我有一个数据库,用于跟踪我所在联赛的统计数据和平均值。我有一个结果表和一个排名表,我将结果中的“分数”添加到排名中的总体“分数”。我目前有一个查询成功地将结果中的分数添加到排名表中。但是,当我添加新结果时,排名不会更新。

这是我的查询,我用它来对从结果到排名的分数求和。

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 ;

不过要小心。您还应该有 updatedelete 触发器。

如果您可以通过在需要时聚合这些点来做到这一点,那么这是一个更好的解决方案(或者至少更简单)。

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

相关文章:

python - 操作错误 : (1054, "Unknown column ' ' 在 'where clause' 中”)

mysql - 无法使用 Php7 和 Mysql 导出到 Excel

python - 使用 MySQLdb 向表中插入行时出错

java - 必须设置 GAE 系统属性 rdbms.driver

MySQL CASE WHEN numb IS NULL 忽略记录 WHERE numb IS NOT NULL

mysql - 如何通过字段的子值之一查询 MySQL?

mysql - 为什么 INNER JOIN 不能正常工作?

mysql - 如何Mysql按月SELECT

mysql表: index vs primary

mysql - 如何使用 Perl 将文本文件加载到 MySQL 中?