MySQL计算列

时间:2014-02-17 18:50:48

标签: mysql

Helllo,我有以下表结构

得分表:

|..ID..User_ID..Test_ID....Test_Score |
|.5.......1.........1...............999.....|
|.4.......1.........3...............120.....|
|.3.......1.........2...............115.....|
|.2.......2.........2...............200.....|
|.1.......2.........3...............123.....|

用户表:

|..ID...Username...TotalTestScore......|
|.2.......Nick................1400...........|
|.1.......Mike................1222...........|

我的目标是使TotalTestScore列保存在Scores表中更改为Scores表时与此User_ID相关的所有分数的总和。 我正在考虑用触发器来做,但不知道如何开始。有人可以说,如果我正在做的事情甚至可能并且可能给出一个暗示。 谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

除非你有数百万gazillions 的用户和测试分数,并且 NO INDEXES 我不会建议存储总测试分数,因为这可以简单地使用查询返回,没有触发器,没有存储列,没有问题 ......

SELECT  u.ID, 
        u.UserName, 
        SUM(s.Test_Score) TotalTestScore
FROM    Users u LEFT JOIN
        Scores s ON u.ID = s.User_ID
GROUP BY    u.ID, 
            u.UserName