php – SUM历史表在数据库中显示用户的总信用(声誉)
>我有一个脚本,显示每个用户的总学分(声誉),它在数据库中有一个历史记录表,用于所有学生的学分 以下是我的历史数据库表的示例: +----------------------------------------------+ | DATE ID USERNAME CREDITS | +----------------------------------------------+ | ... 1 X 12 | | ... 2 E 2 | | ... 3 X 1 | | ... 4 X -7 | | ... 5 O 4 | +----------------------------------------------+ >我的脚本使用SELECT SUM FROM TABLE WHERE username =’X’并回显它,所以在这种情况下,对于用户X(12 1 – 7),它回应6
>我想知道的不是这个(SELECT SUM的所有历史,显示一个用户信用INSTEAD有一个不同的表的总用户数)如果历史表是如此巨大的问题,会出现问题? (让我们说几年后的100,000,000条记录)
但是,如果我们必须在不同的表中保持总额并自动更新它们,则有两个问题: >如果我们完全在用户收到一些信用时做到这一点,用户是不是可以在完全相同的时间收到两个不同的信用(这是可能的),而且我们无法将自动增量放在总计表中(因为每个用户只有1条记录),我们可能会错过1个信用额,或者如果有这个问题的解决方案,我不知道
我们不会错过.检查以下SQL语句: INSERT INTO history SET username = 'X',credits = 2; UPDATE users SET credits_sum = (SELECT SUM(credits) FROM `history` WHERE username = 'X') WHERE username = 'X'; 即使有两个事件添加信用的情况被触发,我们的credit_sum将是最新的,因为它从数据库中存储的数据更新(不在应用程序中 – 在这种情况下,有时可能会有一些差异). 当然,用户表的主键应该使用,而不是用户名=’X’. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |